
/* DWARF original prototype: void add_ehframe_for_plt(Eh_frame * this, Output_data * plt, uchar *
   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */

void __thiscall
gold::Eh_frame::add_ehframe_for_plt
          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,
          size_t fde_length)

{
  bool bVar1;
  pointer ppFVar2;
  _func_int_varargs *p_Var3;
  Cie *pCVar4;
  int iVar5;
  int iVar6;
  int extraout_EDX;
  Cie_offsets *pCVar7;
  Cie ***pppCVar8;
  int unaff_EDI;
  Cie **ppCStack_b0;
  undefined1 auStack_ac [8];
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *local_a4;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *local_a0;
  Cie_offsets *local_9c;
  undefined4 local_98;
  Cie **local_94;
  Cie *local_90;
  undefined1 *local_80;
  Cie *pcie;
  Cie *local_6c;
  Cie cie;
  
  __x86_get_pc_thunk_di();
  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;
  cie.object_ = (Relobj *)0x0;
  ppCStack_b0 = (Cie **)0x0;
  cie.shndx_ = 0;
  cie.input_offset_ = 0;
  cie.fde_encoding_ = '\x1b';
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d);
  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =
       (pointer)0x0;
  ppCStack_b0 = (Cie **)0x0;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =
       (pointer)0x0;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =
       (pointer)0x0;
                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);
  local_90 = &cie;
  local_9c = &this->cie_offsets_;
  local_94 = &local_6c;
  local_6c = local_90;
  std::
  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
  ::find(&local_9c->_M_t,&local_6c);
  pppCVar8 = (Cie ***)auStack_ac;
  if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {
    if (this->mappings_are_done_ != false) {
      ppCStack_b0 = &local_6c;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */
      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);
    }
                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */
    pCVar4 = (Cie *)operator_new(0x4c);
    pCVar4->object_ = cie.object_;
    pCVar4->shndx_ = cie.shndx_;
    pCVar4->input_offset_ = cie.input_offset_;
    pCVar4->fde_encoding_ = cie.fde_encoding_;
    local_a0 = &(pCVar4->personality_name_).field_2;
    (pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;
    ppCStack_b0 = (Cie **)0x0;
                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */
    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,
                        cie.personality_name_._M_dataplus._M_p +
                        cie.personality_name_._M_string_length);
    local_a4 = &(pCVar4->contents_).field_2;
    (pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;
    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =
         (pointer)0x0;
    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =
         (pointer)0x0;
    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.
    _M_end_of_storage = (pointer)0x0;
    ppCStack_b0 = (Cie **)0x0;
                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */
    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,
                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);
    if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=
        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */
      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);
    }
    pcie = pCVar4;
                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */
    std::
    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
    ::_M_insert_unique<gold::Cie*_const&>(&local_9c->_M_t,&pcie);
    pppCVar8 = &ppCStack_b0;
  }
  else {
    pcie = *(Cie **)(local_80 + 0x10);
  }
  *(undefined4 *)((int)pppCVar8 + -0x10) = 0x24;
                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */
  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ace1;
  pCVar4 = (Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10));
  pCVar4->object_ = (Relobj *)0x0;
  bVar1 = this->mappings_are_done_;
  (((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =
       (pointer)&(pCVar4->personality_name_)._M_string_length;
  *(undefined4 *)((int)pppCVar8 + -4) = 0;
  *(uchar **)((int)pppCVar8 + -8) = fde_data + fde_length;
  *(uchar **)((int)pppCVar8 + -0xc) = fde_data;
  *(string **)((int)pppCVar8 + -0x10) = (string *)&pCVar4->fde_encoding_;
                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */
  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad0e;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>();
  *(bool *)&pCVar4->input_offset_ = bVar1;
  (((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt = plt;
  ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.
            _M_finish;
  local_6c = pCVar4;
  if (ppFVar2 ==
      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.
      _M_end_of_storage) {
    *(Cie ***)((int)pppCVar8 + -8) = local_94;
    *(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;
    *(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;
    *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;
    std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::Fde*_const&>
              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),
               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));
  }
  else {
    *ppFVar2 = (Fde *)pCVar4;
    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =
         ppFVar2 + 1;
  }
  if (this->mappings_are_done_ != false) {
    p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {
      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);
      iVar5 = (int)(this->super_Output_section_data).addralign_;
    }
    else {
      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;
      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;
      iVar5 = (*p_Var3)();
      iVar6 = extraout_EDX;
    }
    local_98 = 0;
    local_9c = (Cie_offsets *)(fde_length + 8);
    pCVar7 = local_9c;
    if (iVar6 != 0 || iVar5 != 0) {
      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);
    }
    this->final_data_size_ =
         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);
  }
  *(Cie **)((int)pppCVar8 + -0x10) = local_90;
  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad89;
  Cie::~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));
  return;
}



void FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)

{
  code *pcVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined4 ***pppuVar6;
  int unaff_EDI;
  longlong lVar7;
  undefined4 **ppuStack_b4;
  undefined4 auStack_b0 [3];
  undefined4 *local_a4;
  undefined4 *local_a0;
  int *local_9c;
  undefined4 local_98;
  undefined4 **local_94;
  undefined4 *local_90;
  undefined1 local_8c [12];
  int *local_80 [4];
  undefined4 *local_70;
  undefined4 *local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined1 local_5c;
  undefined1 *local_58;
  int local_54;
  undefined1 local_50 [16];
  int local_40;
  int local_3c;
  undefined4 local_38;
  undefined1 *local_34;
  int local_30;
  undefined1 local_2c [28];
  
  FUN_000b484e();
  local_58 = local_50;
  local_68 = 0;
  auStack_b0[0] = 0;
  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);
  local_64 = 0;
  local_60 = 0;
  local_5c = 0x1b;
  FUN_000a8880(&local_58,ppuStack_b4);
  local_34 = local_2c;
  local_40 = 0;
  auStack_b0[0] = 0;
  ppuStack_b4 = (undefined4 **)(param_4 + param_3);
  local_3c = 0;
  local_38 = 0;
                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */
  FUN_000a8880(&local_34,param_3);
  local_90 = &local_68;
  local_9c = param_1 + 0xc;
  ppuStack_b4 = &local_6c;
  local_94 = &local_6c;
  local_6c = local_90;
  FUN_0021b4b0(local_80,local_9c);
  pppuVar6 = (undefined4 ***)auStack_b0;
  if (local_80[0] == param_1 + 0xd) {
    if ((char)param_1[0x15] != '\0') {
      ppuStack_b4 = &local_6c;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */
      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);
    }
                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */
    puVar4 = (undefined4 *)FUN_00246670(0x4c);
    *puVar4 = local_68;
    puVar4[1] = local_64;
    puVar4[2] = local_60;
    *(undefined1 *)(puVar4 + 3) = local_5c;
    local_a0 = puVar4 + 6;
    puVar4[4] = local_a0;
    ppuStack_b4 = (undefined4 **)0x0;
                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */
    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);
    local_a4 = puVar4 + 0xf;
    puVar4[0xd] = local_a4;
    puVar4[10] = 0;
    puVar4[0xb] = 0;
    puVar4[0xc] = 0;
    ppuStack_b4 = (undefined4 **)0x0;
                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */
    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);
    if (local_3c != local_40) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */
      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);
    }
    local_70 = puVar4;
                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */
    FUN_0021b540(local_8c,local_9c,&local_70);
    pppuVar6 = &ppuStack_b4;
  }
  else {
    local_70 = (undefined4 *)local_80[0][4];
  }
  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;
                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */
  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;
  puVar3 = (undefined4 *)FUN_00246670();
  *puVar3 = 0;
  iVar2 = param_1[0x15];
  puVar3[3] = puVar3 + 5;
  *(undefined4 *)((int)pppuVar6 + -4) = 0;
  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;
  *(int *)((int)pppuVar6 + -0xc) = param_5;
  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;
                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */
  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;
  FUN_000a8880();
  *(char *)(puVar3 + 2) = (char)iVar2;
  puVar3[1] = param_2;
  puVar4 = (undefined4 *)local_70[0xb];
  local_6c = puVar3;
  if (puVar4 == (undefined4 *)local_70[0xc]) {
    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;
    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;
    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;
    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;
    FUN_0021b240();
  }
  else {
    *puVar4 = puVar3;
    local_70[0xb] = puVar4 + 1;
  }
  if ((char)param_1[0x15] != '\0') {
    pcVar1 = *(code **)(*param_1 + 0xc);
    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {
      lVar7 = *(longlong *)(param_1 + 9);
    }
    else {
      *(int **)((int)pppuVar6 + -0x10) = param_1;
      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;
      lVar7 = (*pcVar1)();
    }
    local_98 = 0;
    local_9c = (int *)(param_6 + 8);
    piVar5 = local_9c;
    if (lVar7 != 0) {
      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);
    }
    param_1[0x16] = param_1[0x16] + (int)piVar5;
  }
  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;
  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;
  FUN_0021a270();
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x000b484e
ADD EDI,0x1f93e7
PUSH ESI
LEA ESI,[EBP + -0x4c]
PUSH EBX
SUB ESP,0x9c
MOV dword ptr [EBP + -0x64],0x0
MOV EBX,dword ptr [EBP + 0x10]
PUSH 0x0
LEA EAX,[EDI + 0xffefd196]
MOV dword ptr [EBP + -0x60],0x0
PUSH EAX
PUSH EAX
LEA EAX,[EBP + -0x54]
PUSH EAX
MOV dword ptr [EBP + -0x5c],0x0
MOV byte ptr [EBP + -0x58],0x1b
MOV dword ptr [EBP + -0x54],ESI
CALL 0x000a8880
LEA EAX,[EBP + -0x28]
ADD ESP,0x10
MOV dword ptr [EBP + -0x3c],0x0
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,dword ptr [EBP + 0x14]
PUSH 0x0
ADD EAX,EBX
MOV dword ptr [EBP + -0x38],0x0
PUSH EAX
LEA EAX,[EBP + -0x30]
PUSH EBX
PUSH EAX
MOV dword ptr [EBP + -0x34],0x0
CALL 0x000a8880
LEA EAX,[EBP + -0x64]
ADD ESP,0xc
LEA EBX,[EBP + -0x68]
MOV dword ptr [EBP + 0xffffff74],EAX
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,dword ptr [EBP + 0x8]
PUSH EBX
LEA ECX,[EAX + 0x30]
LEA EAX,[EBP + -0x7c]
MOV dword ptr [EBP + 0xffffff70],EBX
PUSH ECX
PUSH EAX
MOV dword ptr [EBP + 0xffffff68],ECX
CALL 0x0021b4b0
MOV ECX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EBP + -0x7c]
ADD ESP,0xc
LEA EDX,[ECX + 0x34]
CMP EAX,EDX
JZ 0x0021adb0
MOV EAX,dword ptr [EAX + 0x10]
MOV dword ptr [EBP + -0x6c],EAX
SUB ESP,0xc
MOV EBX,EDI
PUSH 0x24
CALL 0x00246670
MOV ESI,EAX
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
LEA EDX,[ESI + 0x14]
MOV dword ptr [ESI],0x0
MOVZX EBX,byte ptr [EAX + 0x54]
MOV dword ptr [ESI + 0xc],EDX
LEA EAX,[ESI + 0xc]
MOV EDX,dword ptr [EBP + 0x18]
ADD EDX,dword ptr [EBP + 0x1c]
PUSH 0x0
PUSH EDX
PUSH dword ptr [EBP + 0x18]
PUSH EAX
CALL 0x000a8880
MOV EAX,dword ptr [EBP + 0xc]
MOV EDX,dword ptr [EBP + -0x6c]
ADD ESP,0x10
MOV byte ptr [ESI + 0x8],BL
MOV dword ptr [EBP + -0x68],ESI
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EDX + 0x2c]
CMP EAX,dword ptr [EDX + 0x30]
JZ 0x0021ae70
MOV dword ptr [EAX],ESI
ADD EAX,0x4
MOV dword ptr [EDX + 0x2c],EAX
MOV EAX,dword ptr [EBP + 0x8]
CMP byte ptr [EAX + 0x54],0x0
JZ 0x0021ad7b
MOV EAX,dword ptr [EAX]
LEA EDX,[EDI + 0xffc903d0]
MOV EAX,dword ptr [EAX + 0xc]
CMP EAX,EDX
JNZ 0x0021ae90
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX + 0x28]
MOV EAX,dword ptr [EAX + 0x24]
MOV dword ptr [EBP + 0xffffff6c],0x0
MOV EDI,dword ptr [EBP + 0x1c]
LEA EBX,[EDI + 0x8]
MOV EDI,EDX
OR EDI,EAX
MOV dword ptr [EBP + 0xffffff68],EBX
JNZ 0x0021ad98
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x58],EBX
SUB ESP,0xc
PUSH dword ptr [EBP + 0xffffff74]
CALL 0x0021a270
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [EBP + 0xffffff68]
ADD ESI,-0x1
ADD ESI,EAX
NEG EAX
MOV EBX,ESI
AND EBX,EAX
JMP 0x0021ad75
MOV EAX,dword ptr [EBP + 0x8]
CMP byte ptr [EAX + 0x54],0x0
JNZ 0x0021aeb9
SUB ESP,0xc
MOV EBX,EDI
PUSH 0x4c
CALL 0x00246670
MOV ESI,EAX
MOV EAX,dword ptr [EBP + -0x64]
MOV ECX,dword ptr [EBP + -0x50]
ADD ESP,0x10
LEA EDX,[ESI + 0x10]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + -0x60]
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EBP + -0x5c]
MOV dword ptr [ESI + 0x8],EAX
MOVZX EAX,byte ptr [EBP + -0x58]
MOV byte ptr [ESI + 0xc],AL
LEA EAX,[ESI + 0x18]
MOV dword ptr [ESI + 0x10],EAX
MOV dword ptr [EBP + 0xffffff64],EAX
MOV EAX,dword ptr [EBP + -0x54]
PUSH 0x0
ADD ECX,EAX
PUSH ECX
PUSH EAX
PUSH EDX
CALL 0x000b8ec0
LEA EAX,[ESI + 0x3c]
MOV ECX,dword ptr [EBP + -0x2c]
ADD ESP,0x10
LEA EDX,[ESI + 0x34]
MOV dword ptr [ESI + 0x34],EAX
MOV dword ptr [EBP + 0xffffff60],EAX
MOV EAX,dword ptr [EBP + -0x30]
MOV dword ptr [ESI + 0x28],0x0
ADD ECX,EAX
MOV dword ptr [ESI + 0x2c],0x0
MOV dword ptr [ESI + 0x30],0x0
PUSH 0x0
PUSH ECX
PUSH EAX
PUSH EDX
CALL 0x000b8ec0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x3c]
CMP dword ptr [EBP + -0x38],EAX
JNZ 0x0021aea0
SUB ESP,0x4
LEA EAX,[EBP + 0xffffff78]
LEA EDX,[EBP + -0x6c]
MOV dword ptr [EBP + -0x6c],ESI
PUSH EDX
PUSH dword ptr [EBP + 0xffffff68]
PUSH EAX
CALL 0x0021b540
ADD ESP,0xc
JMP 0x0021acd5
SUB ESP,0x4
ADD EDX,0x28
PUSH dword ptr [EBP + 0xffffff70]
PUSH EAX
PUSH EDX
CALL 0x0021b240
ADD ESP,0x10
JMP 0x0021ad34
SUB ESP,0xc
PUSH dword ptr [EBP + 0x8]
CALL EAX
ADD ESP,0x10
JMP 0x0021ad59
LEA EAX,[EDI + 0xffefdb04]
PUSH ECX
PUSH EAX
LEA EAX,[EDI + 0xffefdc24]
PUSH 0x128
PUSH EAX
CALL 0x000da200
LEA EAX,[EDI + 0xffefdb08]
PUSH EBX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffefd967]
PUSH 0x486
PUSH EAX
CALL 0x000da200
(translation_unit "void FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)\n\n{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */\n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}\n\n" (function_definition "void FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)\n\n{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */\n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}" primitive_type (function_declarator "FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)" identifier (parameter_list "(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */\n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 ***pppuVar6;" type_identifier (pointer_declarator "***pppuVar6" * (pointer_declarator "**pppuVar6" * (pointer_declarator "*pppuVar6" * identifier))) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "undefined4 **ppuStack_b4;" type_identifier (pointer_declarator "**ppuStack_b4" * (pointer_declarator "*ppuStack_b4" * identifier)) ;) (declaration "undefined4 auStack_b0 [3];" type_identifier (array_declarator "auStack_b0 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_a4;" type_identifier (pointer_declarator "*local_a4" * identifier) ;) (declaration "undefined4 *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "int *local_9c;" primitive_type (pointer_declarator "*local_9c" * identifier) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 **local_94;" type_identifier (pointer_declarator "**local_94" * (pointer_declarator "*local_94" * identifier)) ;) (declaration "undefined4 *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "undefined1 local_8c [12];" type_identifier (array_declarator "local_8c [12]" identifier [ number_literal ]) ;) (declaration "int *local_80 [4];" primitive_type (pointer_declarator "*local_80 [4]" * (array_declarator "local_80 [4]" identifier [ number_literal ])) ;) (declaration "undefined4 *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined4 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined1 local_50 [16];" type_identifier (array_declarator "local_50 [16]" identifier [ number_literal ]) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_000b484e();" (call_expression "FUN_000b484e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_58 = local_50;" (assignment_expression "local_58 = local_50" identifier = identifier) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "auStack_b0[0] = 0;" (assignment_expression "auStack_b0[0] = 0" (subscript_expression "auStack_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);" (assignment_expression "ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d)" identifier = (cast_expression "(undefined4 **)(unaff_EDI + 0xf657d)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xf657d)" ( (binary_expression "unaff_EDI + 0xf657d" identifier + number_literal) )))) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_5c = 0x1b;" (assignment_expression "local_5c = 0x1b" identifier = number_literal) ;) (expression_statement "FUN_000a8880(&local_58,ppuStack_b4);" (call_expression "FUN_000a8880(&local_58,ppuStack_b4)" identifier (argument_list "(&local_58,ppuStack_b4)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "auStack_b0[0] = 0;" (assignment_expression "auStack_b0[0] = 0" (subscript_expression "auStack_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppuStack_b4 = (undefined4 **)(param_4 + param_3);" (assignment_expression "ppuStack_b4 = (undefined4 **)(param_4 + param_3)" identifier = (cast_expression "(undefined4 **)(param_4 + param_3)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + param_3)" ( (binary_expression "param_4 + param_3" identifier + identifier) )))) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_000a8880(&local_34,param_3);" (call_expression "FUN_000a8880(&local_34,param_3)" identifier (argument_list "(&local_34,param_3)" ( (pointer_expression "&local_34" & identifier) , identifier ))) ;) (expression_statement "local_90 = &local_68;" (assignment_expression "local_90 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_9c = param_1 + 0xc;" (assignment_expression "local_9c = param_1 + 0xc" identifier = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "ppuStack_b4 = &local_6c;" (assignment_expression "ppuStack_b4 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) (expression_statement "local_94 = &local_6c;" (assignment_expression "local_94 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) (expression_statement "local_6c = local_90;" (assignment_expression "local_6c = local_90" identifier = identifier) ;) (expression_statement "FUN_0021b4b0(local_80,local_9c);" (call_expression "FUN_0021b4b0(local_80,local_9c)" identifier (argument_list "(local_80,local_9c)" ( identifier , identifier ))) ;) (expression_statement "pppuVar6 = (undefined4 ***)auStack_b0;" (assignment_expression "pppuVar6 = (undefined4 ***)auStack_b0" identifier = (cast_expression "(undefined4 ***)auStack_b0" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }" if (parenthesized_expression "(local_80[0] == param_1 + 0xd)" ( (binary_expression "local_80[0] == param_1 + 0xd" (subscript_expression "local_80[0]" identifier [ number_literal ]) == (binary_expression "param_1 + 0xd" identifier + number_literal)) )) (compound_statement "{\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }" { (if_statement "if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }" if (parenthesized_expression "((char)param_1[0x15] != '\0')" ( (binary_expression "(char)param_1[0x15] != '\0'" (cast_expression "(char)param_1[0x15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x15]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      ppuStack_b4 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }" { (expression_statement "ppuStack_b4 = &local_6c;" (assignment_expression "ppuStack_b4 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) comment comment (expression_statement "FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);" (call_expression "FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef)" identifier (argument_list "(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef)" ( (binary_expression "unaff_EDI + 0xf6d4e" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0xf6eef" identifier + number_literal) ))) ;) })) comment (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x4c);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x4c)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x4c)" identifier (argument_list "(0x4c)" ( number_literal ))))) ;) (expression_statement "*puVar4 = local_68;" (assignment_expression "*puVar4 = local_68" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4[1] = local_64;" (assignment_expression "puVar4[1] = local_64" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = local_60;" (assignment_expression "puVar4[2] = local_60" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(puVar4 + 3) = local_5c;" (assignment_expression "*(undefined1 *)(puVar4 + 3) = local_5c" (pointer_expression "*(undefined1 *)(puVar4 + 3)" * (cast_expression "(undefined1 *)(puVar4 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_a0 = puVar4 + 6;" (assignment_expression "local_a0 = puVar4 + 6" identifier = (binary_expression "puVar4 + 6" identifier + number_literal)) ;) (expression_statement "puVar4[4] = local_a0;" (assignment_expression "puVar4[4] = local_a0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuStack_b4 = (undefined4 **)0x0;" (assignment_expression "ppuStack_b4 = (undefined4 **)0x0" identifier = (cast_expression "(undefined4 **)0x0" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) comment (expression_statement "FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);" (call_expression "FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54)" identifier (argument_list "(puVar4 + 4,local_58,local_58 + local_54)" ( (binary_expression "puVar4 + 4" identifier + number_literal) , identifier , (binary_expression "local_58 + local_54" identifier + identifier) ))) ;) (expression_statement "local_a4 = puVar4 + 0xf;" (assignment_expression "local_a4 = puVar4 + 0xf" identifier = (binary_expression "puVar4 + 0xf" identifier + number_literal)) ;) (expression_statement "puVar4[0xd] = local_a4;" (assignment_expression "puVar4[0xd] = local_a4" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xc] = 0;" (assignment_expression "puVar4[0xc] = 0" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppuStack_b4 = (undefined4 **)0x0;" (assignment_expression "ppuStack_b4 = (undefined4 **)0x0" identifier = (cast_expression "(undefined4 **)0x0" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) comment (expression_statement "FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);" (call_expression "FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30)" identifier (argument_list "(puVar4 + 0xd,local_34,local_34 + local_30)" ( (binary_expression "puVar4 + 0xd" identifier + number_literal) , identifier , (binary_expression "local_34 + local_30" identifier + identifier) ))) ;) (if_statement "if (local_3c != local_40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }" if (parenthesized_expression "(local_3c != local_40)" ( (binary_expression "local_3c != local_40" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }" { comment comment (expression_statement "FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);" (call_expression "FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb)" identifier (argument_list "(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb)" ( (binary_expression "unaff_EDI + 0xf700b" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0xf6eeb" identifier + number_literal) ))) ;) })) (expression_statement "local_70 = puVar4;" (assignment_expression "local_70 = puVar4" identifier = identifier) ;) comment (expression_statement "FUN_0021b540(local_8c,local_9c,&local_70);" (call_expression "FUN_0021b540(local_8c,local_9c,&local_70)" identifier (argument_list "(local_8c,local_9c,&local_70)" ( identifier , identifier , (pointer_expression "&local_70" & identifier) ))) ;) (expression_statement "pppuVar6 = &ppuStack_b4;" (assignment_expression "pppuVar6 = &ppuStack_b4" identifier = (pointer_expression "&ppuStack_b4" & identifier)) ;) }) (else_clause "else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }" else (compound_statement "{\n    local_70 = (undefined4 *)local_80[0][4];\n  }" { (expression_statement "local_70 = (undefined4 *)local_80[0][4];" (assignment_expression "local_70 = (undefined4 *)local_80[0][4]" identifier = (cast_expression "(undefined4 *)local_80[0][4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0][4]" (subscript_expression "local_80[0]" identifier [ number_literal ]) [ number_literal ]))) ;) }))) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x10) = 0x24" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) comment (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar3 = (undefined4 *)FUN_00246670();" (assignment_expression "puVar3 = (undefined4 *)FUN_00246670()" identifier = (cast_expression "(undefined4 *)FUN_00246670()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "iVar2 = param_1[0x15];" (assignment_expression "iVar2 = param_1[0x15]" identifier = (subscript_expression "param_1[0x15]" identifier [ number_literal ])) ;) (expression_statement "puVar3[3] = puVar3 + 5;" (assignment_expression "puVar3[3] = puVar3 + 5" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (binary_expression "puVar3 + 5" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -4) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -4)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -4)" ( (binary_expression "(int)pppuVar6 + -4" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)pppuVar6 + -8) = param_5 + param_6;" (assignment_expression "*(int *)((int)pppuVar6 + -8) = param_5 + param_6" (pointer_expression "*(int *)((int)pppuVar6 + -8)" * (cast_expression "(int *)((int)pppuVar6 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -8)" ( (binary_expression "(int)pppuVar6 + -8" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_5 + param_6" identifier + identifier)) ;) (expression_statement "*(int *)((int)pppuVar6 + -0xc) = param_5;" (assignment_expression "*(int *)((int)pppuVar6 + -0xc) = param_5" (pointer_expression "*(int *)((int)pppuVar6 + -0xc)" * (cast_expression "(int *)((int)pppuVar6 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0xc)" ( (binary_expression "(int)pppuVar6 + -0xc" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "puVar3 + 3" identifier + number_literal)) ;) comment (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000a8880();" (call_expression "FUN_000a8880()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(char *)(puVar3 + 2) = (char)iVar2;" (assignment_expression "*(char *)(puVar3 + 2) = (char)iVar2" (pointer_expression "*(char *)(puVar3 + 2)" * (cast_expression "(char *)(puVar3 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 2)" ( (binary_expression "puVar3 + 2" identifier + number_literal) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3[1] = param_2;" (assignment_expression "puVar3[1] = param_2" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)local_70[0xb];" (assignment_expression "puVar4 = (undefined4 *)local_70[0xb]" identifier = (cast_expression "(undefined4 *)local_70[0xb]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_70[0xb]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = puVar3;" (assignment_expression "local_6c = puVar3" identifier = identifier) ;) (if_statement "if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" if (parenthesized_expression "(puVar4 == (undefined4 *)local_70[0xc])" ( (binary_expression "puVar4 == (undefined4 *)local_70[0xc]" identifier == (cast_expression "(undefined4 *)local_70[0xc]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_70[0xc]" identifier [ number_literal ]))) )) (compound_statement "{\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }" { (expression_statement "*(undefined4 ***)((int)pppuVar6 + -8) = local_94;" (assignment_expression "*(undefined4 ***)((int)pppuVar6 + -8) = local_94" (pointer_expression "*(undefined4 ***)((int)pppuVar6 + -8)" * (cast_expression "(undefined4 ***)((int)pppuVar6 + -8)" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar6 + -8)" ( (binary_expression "(int)pppuVar6 + -8" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0xc) = puVar4" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0xc)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0xc)" ( (binary_expression "(int)pppuVar6 + -0xc" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_70 + 10" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021b240();" (call_expression "FUN_0021b240()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" else (compound_statement "{\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" { (expression_statement "*puVar4 = puVar3;" (assignment_expression "*puVar4 = puVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "local_70[0xb] = puVar4 + 1;" (assignment_expression "local_70[0xb] = puVar4 + 1" (subscript_expression "local_70[0xb]" identifier [ number_literal ]) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }))) (if_statement "if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }" if (parenthesized_expression "((char)param_1[0x15] != '\0')" ( (binary_expression "(char)param_1[0x15] != '\0'" (cast_expression "(char)param_1[0x15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x15]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }" { (expression_statement "pcVar1 = *(code **)(*param_1 + 0xc);" (assignment_expression "pcVar1 = *(code **)(*param_1 + 0xc)" identifier = (pointer_expression "*(code **)(*param_1 + 0xc)" * (cast_expression "(code **)(*param_1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" if (parenthesized_expression "(pcVar1 == (code *)(unaff_EDI + -0x176849))" ( (binary_expression "pcVar1 == (code *)(unaff_EDI + -0x176849)" identifier == (cast_expression "(code *)(unaff_EDI + -0x176849)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x176849)" ( (binary_expression "unaff_EDI + -0x176849" identifier + number_literal) )))) )) (compound_statement "{\n      lVar7 = *(longlong *)(param_1 + 9);\n    }" { (expression_statement "lVar7 = *(longlong *)(param_1 + 9);" (assignment_expression "lVar7 = *(longlong *)(param_1 + 9)" identifier = (pointer_expression "*(longlong *)(param_1 + 9)" * (cast_expression "(longlong *)(param_1 + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" else (compound_statement "{\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" { (expression_statement "*(int **)((int)pppuVar6 + -0x10) = param_1;" (assignment_expression "*(int **)((int)pppuVar6 + -0x10) = param_1" (pointer_expression "*(int **)((int)pppuVar6 + -0x10)" * (cast_expression "(int **)((int)pppuVar6 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar7 = (*pcVar1)();" (assignment_expression "lVar7 = (*pcVar1)()" identifier = (call_expression "(*pcVar1)()" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "local_9c = (int *)(param_6 + 8);" (assignment_expression "local_9c = (int *)(param_6 + 8)" identifier = (cast_expression "(int *)(param_6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 8)" ( (binary_expression "param_6 + 8" identifier + number_literal) )))) ;) (expression_statement "piVar5 = local_9c;" (assignment_expression "piVar5 = local_9c" identifier = identifier) ;) (if_statement "if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }" { (expression_statement "piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);" (assignment_expression "piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7)" identifier = (cast_expression "(int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 7 + (int)lVar7 & -(int)lVar7)" ( (binary_expression "param_6 + 7 + (int)lVar7 & -(int)lVar7" (binary_expression "param_6 + 7 + (int)lVar7" (binary_expression "param_6 + 7" identifier + number_literal) + (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier)) & (unary_expression "-(int)lVar7" - (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) })) (expression_statement "param_1[0x16] = param_1[0x16] + (int)piVar5;" (assignment_expression "param_1[0x16] = param_1[0x16] + (int)piVar5" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = (binary_expression "param_1[0x16] + (int)piVar5" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) + (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = local_90;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = local_90" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021a270();" (call_expression "FUN_0021a270()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void add_ehframe_for_plt(Eh_frame * this, Output_data * plt, uchar *\n   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */\n\nvoid __thiscall\ngold::Eh_frame::add_ehframe_for_plt\n          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)\n\n{\n  bool bVar1;\n  pointer ppFVar2;\n  _func_int_varargs *p_Var3;\n  Cie *pCVar4;\n  int iVar5;\n  int iVar6;\n  int extraout_EDX;\n  Cie_offsets *pCVar7;\n  Cie ***pppCVar8;\n  int unaff_EDI;\n  Cie **ppCStack_b0;\n  undefined1 auStack_ac [8];\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *local_a4;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *local_a0;\n  Cie_offsets *local_9c;\n  undefined4 local_98;\n  Cie **local_94;\n  Cie *local_90;\n  undefined1 *local_80;\n  Cie *pcie;\n  Cie *local_6c;\n  Cie cie;\n  \n  __x86_get_pc_thunk_di();\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.object_ = (Relobj *)0x0;\n  ppCStack_b0 = (Cie **)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  cie.fde_encoding_ = '\x1b';\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d);\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  ppCStack_b0 = (Cie **)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);\n  local_90 = &cie;\n  local_9c = &this->cie_offsets_;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find(&local_9c->_M_t,&local_6c);\n  pppCVar8 = (Cie ***)auStack_ac;\n  if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n    if (this->mappings_are_done_ != false) {\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    pCVar4 = (Cie *)operator_new(0x4c);\n    pCVar4->object_ = cie.object_;\n    pCVar4->shndx_ = cie.shndx_;\n    pCVar4->input_offset_ = cie.input_offset_;\n    pCVar4->fde_encoding_ = cie.fde_encoding_;\n    local_a0 = &(pCVar4->personality_name_).field_2;\n    (pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);\n    local_a4 = &(pCVar4->contents_).field_2;\n    (pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);\n    if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }\n    pcie = pCVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold::Cie*_const&>(&local_9c->_M_t,&pcie);\n    pppCVar8 = &ppCStack_b0;\n  }\n  else {\n    pcie = *(Cie **)(local_80 + 0x10);\n  }\n  *(undefined4 *)((int)pppCVar8 + -0x10) = 0x24;\n                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ace1;\n  pCVar4 = (Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10));\n  pCVar4->object_ = (Relobj *)0x0;\n  bVar1 = this->mappings_are_done_;\n  (((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =\n       (pointer)&(pCVar4->personality_name_)._M_string_length;\n  *(undefined4 *)((int)pppCVar8 + -4) = 0;\n  *(uchar **)((int)pppCVar8 + -8) = fde_data + fde_length;\n  *(uchar **)((int)pppCVar8 + -0xc) = fde_data;\n  *(string **)((int)pppCVar8 + -0x10) = (string *)&pCVar4->fde_encoding_;\n                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad0e;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>();\n  *(bool *)&pCVar4->input_offset_ = bVar1;\n  (((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt = plt;\n  ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n            _M_finish;\n  local_6c = pCVar4;\n  if (ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n      _M_end_of_storage) {\n    *(Cie ***)((int)pppCVar8 + -8) = local_94;\n    *(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;\n    *(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;\n    *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;\n    std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));\n  }\n  else {\n    *ppFVar2 = (Fde *)pCVar4;\n    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;\n  }\n  if (this->mappings_are_done_ != false) {\n    p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }\n    else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }\n    local_98 = 0;\n    local_9c = (Cie_offsets *)(fde_length + 8);\n    pCVar7 = local_9c;\n    if (iVar6 != 0 || iVar5 != 0) {\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }\n    this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);\n  }\n  *(Cie **)((int)pppCVar8 + -0x10) = local_90;\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad89;\n  Cie::~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Eh_frame::add_ehframe_for_plt\n          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)\n\n{\n  bool bVar1;\n  pointer ppFVar2;\n  _func_int_varargs *p_Var3;\n  Cie *pCVar4;\n  int iVar5;\n  int iVar6;\n  int extraout_EDX;\n  Cie_offsets *pCVar7;\n  Cie ***pppCVar8;\n  int unaff_EDI;\n  Cie **ppCStack_b0;\n  undefined1 auStack_ac [8];\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *local_a4;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *local_a0;\n  Cie_offsets *local_9c;\n  undefined4 local_98;\n  Cie **local_94;\n  Cie *local_90;\n  undefined1 *local_80;\n  Cie *pcie;\n  Cie *local_6c;\n  Cie cie;\n  \n  __x86_get_pc_thunk_di();\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.object_ = (Relobj *)0x0;\n  ppCStack_b0 = (Cie **)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  cie.fde_encoding_ = '\x1b';\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d);\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  ppCStack_b0 = (Cie **)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);\n  local_90 = &cie;\n  local_9c = &this->cie_offsets_;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find(&local_9c->_M_t,&local_6c);\n  pppCVar8 = (Cie ***)auStack_ac;\n  if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n    if (this->mappings_are_done_ != false) {\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    pCVar4 = (Cie *)operator_new(0x4c);\n    pCVar4->object_ = cie.object_;\n    pCVar4->shndx_ = cie.shndx_;\n    pCVar4->input_offset_ = cie.input_offset_;\n    pCVar4->fde_encoding_ = cie.fde_encoding_;\n    local_a0 = &(pCVar4->personality_name_).field_2;\n    (pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);\n    local_a4 = &(pCVar4->contents_).field_2;\n    (pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);\n    if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }\n    pcie = pCVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold::Cie*_const&>(&local_9c->_M_t,&pcie);\n    pppCVar8 = &ppCStack_b0;\n  }\n  else {\n    pcie = *(Cie **)(local_80 + 0x10);\n  }\n  *(undefined4 *)((int)pppCVar8 + -0x10) = 0x24;\n                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ace1;\n  pCVar4 = (Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10));\n  pCVar4->object_ = (Relobj *)0x0;\n  bVar1 = this->mappings_are_done_;\n  (((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =\n       (pointer)&(pCVar4->personality_name_)._M_string_length;\n  *(undefined4 *)((int)pppCVar8 + -4) = 0;\n  *(uchar **)((int)pppCVar8 + -8) = fde_data + fde_length;\n  *(uchar **)((int)pppCVar8 + -0xc) = fde_data;\n  *(string **)((int)pppCVar8 + -0x10) = (string *)&pCVar4->fde_encoding_;\n                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad0e;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>();\n  *(bool *)&pCVar4->input_offset_ = bVar1;\n  (((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt = plt;\n  ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n            _M_finish;\n  local_6c = pCVar4;\n  if (ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n      _M_end_of_storage) {\n    *(Cie ***)((int)pppCVar8 + -8) = local_94;\n    *(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;\n    *(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;\n    *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;\n    std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));\n  }\n  else {\n    *ppFVar2 = (Fde *)pCVar4;\n    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;\n  }\n  if (this->mappings_are_done_ != false) {\n    p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }\n    else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }\n    local_98 = 0;\n    local_9c = (Cie_offsets *)(fde_length + 8);\n    pCVar7 = local_9c;\n    if (iVar6 != 0 || iVar5 != 0) {\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }\n    this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);\n  }\n  *(Cie **)((int)pppCVar8 + -0x10) = local_90;\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad89;\n  Cie::~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Eh_frame::" identifier : : identifier : :) (function_declarator "add_ehframe_for_plt\n          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)" identifier (parameter_list "(Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)" ( (parameter_declaration "Eh_frame *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_data *plt" type_identifier (pointer_declarator "*plt" * identifier)) , (parameter_declaration "uchar *cie_data" type_identifier (pointer_declarator "*cie_data" * identifier)) , (parameter_declaration "size_t cie_length" primitive_type identifier) , (parameter_declaration "uchar *fde_data" type_identifier (pointer_declarator "*fde_data" * identifier)) , (parameter_declaration "size_t fde_length" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  pointer ppFVar2;\n  _func_int_varargs *p_Var3;\n  Cie *pCVar4;\n  int iVar5;\n  int iVar6;\n  int extraout_EDX;\n  Cie_offsets *pCVar7;\n  Cie ***pppCVar8;\n  int unaff_EDI;\n  Cie **ppCStack_b0;\n  undefined1 auStack_ac [8];\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *local_a4;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *local_a0;\n  Cie_offsets *local_9c;\n  undefined4 local_98;\n  Cie **local_94;\n  Cie *local_90;\n  undefined1 *local_80;\n  Cie *pcie;\n  Cie *local_6c;\n  Cie cie;\n  \n  __x86_get_pc_thunk_di();\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.object_ = (Relobj *)0x0;\n  ppCStack_b0 = (Cie **)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  cie.fde_encoding_ = '\x1b';\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d);\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  ppCStack_b0 = (Cie **)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);\n  local_90 = &cie;\n  local_9c = &this->cie_offsets_;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find(&local_9c->_M_t,&local_6c);\n  pppCVar8 = (Cie ***)auStack_ac;\n  if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n    if (this->mappings_are_done_ != false) {\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    pCVar4 = (Cie *)operator_new(0x4c);\n    pCVar4->object_ = cie.object_;\n    pCVar4->shndx_ = cie.shndx_;\n    pCVar4->input_offset_ = cie.input_offset_;\n    pCVar4->fde_encoding_ = cie.fde_encoding_;\n    local_a0 = &(pCVar4->personality_name_).field_2;\n    (pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);\n    local_a4 = &(pCVar4->contents_).field_2;\n    (pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);\n    if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }\n    pcie = pCVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold::Cie*_const&>(&local_9c->_M_t,&pcie);\n    pppCVar8 = &ppCStack_b0;\n  }\n  else {\n    pcie = *(Cie **)(local_80 + 0x10);\n  }\n  *(undefined4 *)((int)pppCVar8 + -0x10) = 0x24;\n                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ace1;\n  pCVar4 = (Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10));\n  pCVar4->object_ = (Relobj *)0x0;\n  bVar1 = this->mappings_are_done_;\n  (((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =\n       (pointer)&(pCVar4->personality_name_)._M_string_length;\n  *(undefined4 *)((int)pppCVar8 + -4) = 0;\n  *(uchar **)((int)pppCVar8 + -8) = fde_data + fde_length;\n  *(uchar **)((int)pppCVar8 + -0xc) = fde_data;\n  *(string **)((int)pppCVar8 + -0x10) = (string *)&pCVar4->fde_encoding_;\n                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad0e;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>();\n  *(bool *)&pCVar4->input_offset_ = bVar1;\n  (((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt = plt;\n  ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n            _M_finish;\n  local_6c = pCVar4;\n  if (ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n      _M_end_of_storage) {\n    *(Cie ***)((int)pppCVar8 + -8) = local_94;\n    *(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;\n    *(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;\n    *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;\n    std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));\n  }\n  else {\n    *ppFVar2 = (Fde *)pCVar4;\n    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;\n  }\n  if (this->mappings_are_done_ != false) {\n    p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }\n    else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }\n    local_98 = 0;\n    local_9c = (Cie_offsets *)(fde_length + 8);\n    pCVar7 = local_9c;\n    if (iVar6 != 0 || iVar5 != 0) {\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }\n    this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);\n  }\n  *(Cie **)((int)pppCVar8 + -0x10) = local_90;\n  *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad89;\n  Cie::~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "pointer ppFVar2;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "Cie *pCVar4;" type_identifier (pointer_declarator "*pCVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "Cie_offsets *pCVar7;" type_identifier (pointer_declarator "*pCVar7" * identifier) ;) (declaration "Cie ***pppCVar8;" type_identifier (pointer_declarator "***pppCVar8" * (pointer_declarator "**pppCVar8" * (pointer_declarator "*pppCVar8" * identifier))) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Cie **ppCStack_b0;" type_identifier (pointer_declarator "**ppCStack_b0" * (pointer_declarator "*ppCStack_b0" * identifier)) ;) (declaration "undefined1 auStack_ac [8];" type_identifier (array_declarator "auStack_ac [8]" identifier [ number_literal ]) ;) (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) : :) (expression_statement "allocator<char>_>_9\n  *local_a4;" (binary_expression "allocator<char>_>_9\n  *local_a4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *local_a4" identifier * identifier)) ;) (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) : :) (expression_statement "allocator<char>_>_9\n  *local_a0;" (binary_expression "allocator<char>_>_9\n  *local_a0" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *local_a0" identifier * identifier)) ;) (declaration "Cie_offsets *local_9c;" type_identifier (pointer_declarator "*local_9c" * identifier) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "Cie **local_94;" type_identifier (pointer_declarator "**local_94" * (pointer_declarator "*local_94" * identifier)) ;) (declaration "Cie *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "undefined1 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "Cie *pcie;" type_identifier (pointer_declarator "*pcie" * identifier) ;) (declaration "Cie *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "Cie cie;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;" (assignment_expression "cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2" (field_expression "cie.personality_name_._M_dataplus._M_p" (field_expression "cie.personality_name_._M_dataplus" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&cie.personality_name_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "cie.personality_name_.field_2" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "cie.object_ = (Relobj *)0x0;" (assignment_expression "cie.object_ = (Relobj *)0x0" (field_expression "cie.object_" identifier . field_identifier) = (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppCStack_b0 = (Cie **)0x0;" (assignment_expression "ppCStack_b0 = (Cie **)0x0" identifier = (cast_expression "(Cie **)0x0" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "cie.shndx_ = 0;" (assignment_expression "cie.shndx_ = 0" (field_expression "cie.shndx_" identifier . field_identifier) = number_literal) ;) (expression_statement "cie.input_offset_ = 0;" (assignment_expression "cie.input_offset_ = 0" (field_expression "cie.input_offset_" identifier . field_identifier) = number_literal) ;) (expression_statement "cie.fde_encoding_ = '\x1b';" (assignment_expression "cie.fde_encoding_ = '\x1b'" (field_expression "cie.fde_encoding_" identifier . field_identifier) = (char_literal "'\x1b'" ' escape_sequence ')) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d);" 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*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d);" (binary_expression "_M_construct<char_const*>(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d)" ( (comma_expression "&cie.personality_name_,unaff_EDI + 0xf657d,unaff_EDI + 0xf657d" (pointer_expression "&cie.personality_name_" & (field_expression "cie.personality_name_" identifier . field_identifier)) , (comma_expression "unaff_EDI + 0xf657d,unaff_EDI + 0xf657d" (binary_expression "unaff_EDI + 0xf657d" identifier + number_literal) , (binary_expression "unaff_EDI + 0xf657d" identifier + number_literal))) ))) ;)) (expression_statement "cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;" (assignment_expression "cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2" (field_expression "cie.contents_._M_dataplus._M_p" (field_expression "cie.contents_._M_dataplus" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&cie.contents_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "cie.contents_.field_2" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "ppCStack_b0 = (Cie **)0x0;" (assignment_expression "ppCStack_b0 = (Cie **)0x0" identifier = (cast_expression "(Cie **)0x0" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);" (binary_expression "_M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&cie.contents_,cie_data,cie_data + cie_length)" ( (comma_expression "&cie.contents_,cie_data,cie_data + cie_length" (pointer_expression "&cie.contents_" & (field_expression "cie.contents_" identifier . field_identifier)) , (comma_expression "cie_data,cie_data + cie_length" identifier , (binary_expression "cie_data + cie_length" identifier + identifier))) ))) ;)) (expression_statement "local_90 = &cie;" (assignment_expression "local_90 = &cie" identifier = (pointer_expression "&cie" & identifier)) ;) (expression_statement "local_9c = &this->cie_offsets_;" (assignment_expression "local_9c = &this->cie_offsets_" identifier = (pointer_expression "&this->cie_offsets_" & (field_expression "this->cie_offsets_" identifier -> field_identifier))) ;) (expression_statement "local_94 = &local_6c;" (assignment_expression "local_94 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) (expression_statement "local_6c = local_90;" (assignment_expression "local_6c = local_90" identifier = identifier) ;) (ERROR "std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::" (comma_expression "std::\n  _Rb_tree<gold::Cie*,_gold" identifier (ERROR "::\n  _Rb_tree<gold::Cie*" : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "Cie*,_std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (comma_expression "Cie*>,_gold" identifier (ERROR "*>" * >) , identifier) : :) (expression_statement "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find(&local_9c->_M_t,&local_6c);" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find(&local_9c->_M_t,&local_6c)" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_" identifier (ERROR "::Cie_less,_std::allocator<gold::Cie*" : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier *) > identifier) > (ERROR "::" : :) (call_expression "find(&local_9c->_M_t,&local_6c)" identifier (argument_list "(&local_9c->_M_t,&local_6c)" ( (pointer_expression "&local_9c->_M_t" & (field_expression "local_9c->_M_t" identifier -> field_identifier)) , (pointer_expression "&local_6c" & identifier) )))) ;) (expression_statement "pppCVar8 = (Cie ***)auStack_ac;" (assignment_expression "pppCVar8 = (Cie ***)auStack_ac" identifier = (cast_expression "(Cie ***)auStack_ac" ( (type_descriptor "Cie ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n    if (this->mappings_are_done_ != false) {\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    pCVar4 = (Cie *)operator_new(0x4c);\n    pCVar4->object_ = cie.object_;\n    pCVar4->shndx_ = cie.shndx_;\n    pCVar4->input_offset_ = cie.input_offset_;\n    pCVar4->fde_encoding_ = cie.fde_encoding_;\n    local_a0 = &(pCVar4->personality_name_).field_2;\n    (pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);\n    local_a4 = &(pCVar4->contents_).field_2;\n    (pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);\n    if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }\n    pcie = pCVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold::Cie*_const&>(&local_9c->_M_t,&pcie);\n    pppCVar8 = &ppCStack_b0;\n  }\n  else {\n    pcie = *(Cie **)(local_80 + 0x10);\n  }" if (parenthesized_expression "((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)" ( (binary_expression "(_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)local_80" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (pointer_expression "&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->cie_offsets_)._M_t._M_impl" (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) )) (compound_statement "{\n    if (this->mappings_are_done_ != false) {\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }\n                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */\n    pCVar4 = (Cie *)operator_new(0x4c);\n    pCVar4->object_ = cie.object_;\n    pCVar4->shndx_ = cie.shndx_;\n    pCVar4->input_offset_ = cie.input_offset_;\n    pCVar4->fde_encoding_ = cie.fde_encoding_;\n    local_a0 = &(pCVar4->personality_name_).field_2;\n    (pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);\n    local_a4 = &(pCVar4->contents_).field_2;\n    (pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    (pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    ppCStack_b0 = (Cie **)0x0;\n                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);\n    if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }\n    pcie = pCVar4;\n                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold::Cie*_const&>(&local_9c->_M_t,&pcie);\n    pppCVar8 = &ppCStack_b0;\n  }" { (if_statement "if (this->mappings_are_done_ != false) {\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }" if (parenthesized_expression "(this->mappings_are_done_ != false)" ( (binary_expression "this->mappings_are_done_ != false" (field_expression "this->mappings_are_done_" identifier -> field_identifier) != false) )) (compound_statement "{\n      ppCStack_b0 = &local_6c;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */\n      do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);\n    }" { (expression_statement "ppCStack_b0 = &local_6c;" (assignment_expression "ppCStack_b0 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) comment comment (expression_statement "do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI);" (call_expression "do_gold_unreachable(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI)" identifier (argument_list "(&UNK_000f6d4e + unaff_EDI,0x486,&UNK_000f6eef + unaff_EDI)" ( (binary_expression "&UNK_000f6d4e + unaff_EDI" (pointer_expression "&UNK_000f6d4e" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000f6eef + unaff_EDI" (pointer_expression "&UNK_000f6eef" & identifier) + identifier) ))) ;) })) comment (expression_statement "pCVar4 = (Cie *)operator_new(0x4c);" (assignment_expression "pCVar4 = (Cie *)operator_new(0x4c)" identifier = (cast_expression "(Cie *)operator_new(0x4c)" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x4c)" identifier (argument_list "(0x4c)" ( number_literal ))))) ;) (expression_statement "pCVar4->object_ = cie.object_;" (assignment_expression "pCVar4->object_ = cie.object_" (field_expression "pCVar4->object_" identifier -> field_identifier) = (field_expression "cie.object_" identifier . field_identifier)) ;) (expression_statement "pCVar4->shndx_ = cie.shndx_;" (assignment_expression "pCVar4->shndx_ = cie.shndx_" (field_expression "pCVar4->shndx_" identifier -> field_identifier) = (field_expression "cie.shndx_" identifier . field_identifier)) ;) (expression_statement "pCVar4->input_offset_ = cie.input_offset_;" (assignment_expression "pCVar4->input_offset_ = cie.input_offset_" (field_expression "pCVar4->input_offset_" identifier -> field_identifier) = (field_expression "cie.input_offset_" identifier . field_identifier)) ;) (expression_statement "pCVar4->fde_encoding_ = cie.fde_encoding_;" (assignment_expression "pCVar4->fde_encoding_ = cie.fde_encoding_" (field_expression "pCVar4->fde_encoding_" identifier -> field_identifier) = (field_expression "cie.fde_encoding_" identifier . field_identifier)) ;) (expression_statement "local_a0 = &(pCVar4->personality_name_).field_2;" (assignment_expression "local_a0 = &(pCVar4->personality_name_).field_2" identifier = (pointer_expression "&(pCVar4->personality_name_).field_2" & (field_expression "(pCVar4->personality_name_).field_2" (parenthesized_expression "(pCVar4->personality_name_)" ( (field_expression "pCVar4->personality_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0;" (assignment_expression "(pCVar4->personality_name_)._M_dataplus._M_p = (pointer)local_a0" (field_expression "(pCVar4->personality_name_)._M_dataplus._M_p" (field_expression "(pCVar4->personality_name_)._M_dataplus" (parenthesized_expression "(pCVar4->personality_name_)" ( (field_expression "pCVar4->personality_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)local_a0" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "ppCStack_b0 = (Cie **)0x0;" (assignment_expression "ppCStack_b0 = (Cie **)0x0" identifier = (cast_expression "(Cie **)0x0" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length);" (binary_expression "_M_construct<char*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length)" ( (comma_expression "&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length" (pointer_expression "&pCVar4->personality_name_" & (field_expression "pCVar4->personality_name_" identifier -> field_identifier)) , (comma_expression "cie.personality_name_._M_dataplus._M_p,\n                        cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length" (field_expression "cie.personality_name_._M_dataplus._M_p" (field_expression "cie.personality_name_._M_dataplus" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier) . field_identifier) , (binary_expression "cie.personality_name_._M_dataplus._M_p +\n                        cie.personality_name_._M_string_length" (field_expression "cie.personality_name_._M_dataplus._M_p" (field_expression "cie.personality_name_._M_dataplus" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "cie.personality_name_._M_string_length" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier)))) ))) ;)) (expression_statement "local_a4 = &(pCVar4->contents_).field_2;" (assignment_expression "local_a4 = &(pCVar4->contents_).field_2" identifier = (pointer_expression "&(pCVar4->contents_).field_2" & (field_expression "(pCVar4->contents_).field_2" (parenthesized_expression "(pCVar4->contents_)" ( (field_expression "pCVar4->contents_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4;" (assignment_expression "(pCVar4->contents_)._M_dataplus._M_p = (pointer)local_a4" (field_expression "(pCVar4->contents_)._M_dataplus._M_p" (field_expression "(pCVar4->contents_)._M_dataplus" (parenthesized_expression "(pCVar4->contents_)" ( (field_expression "pCVar4->contents_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)local_a4" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0;" (assignment_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n         (pointer)0x0" (field_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start" (field_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold" (field_expression "(pCVar4->fdes_).super__Vector_base" (parenthesized_expression "(pCVar4->fdes_)" ( (field_expression "pCVar4->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0;" (assignment_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         (pointer)0x0" (field_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold" (field_expression "(pCVar4->fdes_).super__Vector_base" (parenthesized_expression "(pCVar4->fdes_)" ( (field_expression "pCVar4->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;" (assignment_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0" (field_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n    _M_end_of_storage" (field_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(pCVar4->fdes_).super__Vector_base<gold" (field_expression "(pCVar4->fdes_).super__Vector_base" (parenthesized_expression "(pCVar4->fdes_)" ( (field_expression "pCVar4->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "ppCStack_b0 = (Cie **)0x0;" (assignment_expression "ppCStack_b0 = (Cie **)0x0" identifier = (cast_expression "(Cie **)0x0" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);" (binary_expression "_M_construct<char*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length)" ( (comma_expression "&pCVar4->contents_,cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length" (pointer_expression "&pCVar4->contents_" & (field_expression "pCVar4->contents_" identifier -> field_identifier)) , (comma_expression "cie.contents_._M_dataplus._M_p,\n                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length" (field_expression "cie.contents_._M_dataplus._M_p" (field_expression "cie.contents_._M_dataplus" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier) . field_identifier) , (binary_expression "cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length" (field_expression "cie.contents_._M_dataplus._M_p" (field_expression "cie.contents_._M_dataplus" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "cie.contents_._M_string_length" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier)))) ))) ;)) (if_statement "if (cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }" if (parenthesized_expression "(cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start)" ( (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish !=\n        cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier)) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */\n      do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);\n    }" { comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI);" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI)" identifier (argument_list "((char *)(unaff_EDI + 0xf700b),0x128,&UNK_000f6eeb + unaff_EDI)" ( (cast_expression "(char *)(unaff_EDI + 0xf700b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xf700b)" ( (binary_expression "unaff_EDI + 0xf700b" identifier + number_literal) ))) , number_literal , (binary_expression "&UNK_000f6eeb + unaff_EDI" (pointer_expression "&UNK_000f6eeb" & identifier) + identifier) ))) ;) })) (expression_statement "pcie = pCVar4;" (assignment_expression "pcie = pCVar4" identifier = identifier) ;) comment (ERROR "std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold::" (comma_expression "std::\n    _Rb_tree<gold::Cie*,_gold" identifier (ERROR "::\n    _Rb_tree<gold::Cie*" : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "Cie*,_std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (comma_expression "Cie*>,_gold" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique<gold" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::_M_insert_unique" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_" identifier (ERROR "::Cie_less,_std::allocator<gold::Cie*" : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier *) > identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Cie*_const&>(&local_9c->_M_t,&pcie);" (binary_expression "Cie*_const&>(&local_9c->_M_t,&pcie)" (binary_expression "Cie*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(&local_9c->_M_t,&pcie)" ( (comma_expression "&local_9c->_M_t,&pcie" (pointer_expression "&local_9c->_M_t" & (field_expression "local_9c->_M_t" identifier -> field_identifier)) , (pointer_expression "&pcie" & identifier)) ))) ;) (expression_statement "pppCVar8 = &ppCStack_b0;" (assignment_expression "pppCVar8 = &ppCStack_b0" identifier = (pointer_expression "&ppCStack_b0" & identifier)) ;) }) (else_clause "else {\n    pcie = *(Cie **)(local_80 + 0x10);\n  }" else (compound_statement "{\n    pcie = *(Cie **)(local_80 + 0x10);\n  }" { (expression_statement "pcie = *(Cie **)(local_80 + 0x10);" (assignment_expression "pcie = *(Cie **)(local_80 + 0x10)" identifier = (pointer_expression "*(Cie **)(local_80 + 0x10)" * (cast_expression "(Cie **)(local_80 + 0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_80 + 0x10)" ( (binary_expression "local_80 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(undefined4 *)((int)pppCVar8 + -0x10) = 0x24;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -0x10) = 0x24" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -0x10)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) comment (expression_statement "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ace1;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ace1" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x14)" ( (binary_expression "(int)pppCVar8 + -0x14" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pCVar4 = (Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10));" (assignment_expression "pCVar4 = (Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10))" identifier = (cast_expression "(Cie *)operator_new(*(uint *)((int)pppCVar8 + -0x10))" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)((int)pppCVar8 + -0x10))" identifier (argument_list "(*(uint *)((int)pppCVar8 + -0x10))" ( (pointer_expression "*(uint *)((int)pppCVar8 + -0x10)" * (cast_expression "(uint *)((int)pppCVar8 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) (expression_statement "pCVar4->object_ = (Relobj *)0x0;" (assignment_expression "pCVar4->object_ = (Relobj *)0x0" (field_expression "pCVar4->object_" identifier -> field_identifier) = (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar1 = this->mappings_are_done_;" (assignment_expression "bVar1 = this->mappings_are_done_" identifier = (field_expression "this->mappings_are_done_" identifier -> field_identifier)) ;) (expression_statement "(((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =\n       (pointer)&(pCVar4->personality_name_)._M_string_length;" (assignment_expression "(((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =\n       (pointer)&(pCVar4->personality_name_)._M_string_length" (field_expression "(((string *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p" (parenthesized_expression "(((string *)&pCVar4->fde_encoding_)->_M_dataplus)" ( (field_expression "((string *)&pCVar4->fde_encoding_)->_M_dataplus" (parenthesized_expression "((string *)&pCVar4->fde_encoding_)" ( (cast_expression "(string *)&pCVar4->fde_encoding_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pCVar4->fde_encoding_" & (field_expression "pCVar4->fde_encoding_" identifier -> field_identifier))) )) -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&(pCVar4->personality_name_)._M_string_length" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pCVar4->personality_name_)._M_string_length" (parenthesized_expression "(pCVar4->personality_name_)" ( (field_expression "pCVar4->personality_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*(undefined4 *)((int)pppCVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -4) = 0" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -4)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -4)" ( (binary_expression "(int)pppCVar8 + -4" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uchar **)((int)pppCVar8 + -8) = fde_data + fde_length;" (assignment_expression "*(uchar **)((int)pppCVar8 + -8) = fde_data + fde_length" (pointer_expression "*(uchar **)((int)pppCVar8 + -8)" * (cast_expression "(uchar **)((int)pppCVar8 + -8)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppCVar8 + -8)" ( (binary_expression "(int)pppCVar8 + -8" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "fde_data + fde_length" identifier + identifier)) ;) (expression_statement "*(uchar **)((int)pppCVar8 + -0xc) = fde_data;" (assignment_expression "*(uchar **)((int)pppCVar8 + -0xc) = fde_data" (pointer_expression "*(uchar **)((int)pppCVar8 + -0xc)" * (cast_expression "(uchar **)((int)pppCVar8 + -0xc)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppCVar8 + -0xc)" ( (binary_expression "(int)pppCVar8 + -0xc" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(string **)((int)pppCVar8 + -0x10) = (string *)&pCVar4->fde_encoding_;" (assignment_expression "*(string **)((int)pppCVar8 + -0x10) = (string *)&pCVar4->fde_encoding_" (pointer_expression "*(string **)((int)pppCVar8 + -0x10)" * (cast_expression "(string **)((int)pppCVar8 + -0x10)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(string *)&pCVar4->fde_encoding_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pCVar4->fde_encoding_" & (field_expression "pCVar4->fde_encoding_" identifier -> field_identifier)))) ;) comment (expression_statement "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad0e;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad0e" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x14)" ( (binary_expression "(int)pppCVar8 + -0x14" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>();" 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*>();" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*>()" * > ( )) ;)) (expression_statement "*(bool *)&pCVar4->input_offset_ = bVar1;" (assignment_expression "*(bool *)&pCVar4->input_offset_ = bVar1" (pointer_expression "*(bool *)&pCVar4->input_offset_" * (cast_expression "(bool *)&pCVar4->input_offset_" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pCVar4->input_offset_" & (field_expression "pCVar4->input_offset_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "(((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt = plt;" (assignment_expression "(((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt = plt" (field_expression "(((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker).plt" (parenthesized_expression "(((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker)" ( (field_expression "((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)->from_linker" (parenthesized_expression "((anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_)" ( (cast_expression "(anon_union_8_2_39a65479_for_u_ *)&pCVar4->shndx_" ( (type_descriptor "anon_union_8_2_39a65479_for_u_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pCVar4->shndx_" & (field_expression "pCVar4->shndx_" identifier -> field_identifier))) )) -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n            _M_finish;" (field_expression "ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n            _M_finish" (field_expression "ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "ppFVar2 = (pcie->fdes_).super__Vector_base<gold::Fde*,_std" (assignment_expression "ppFVar2 = (pcie->fdes_).super__Vector_base<gold" identifier = (binary_expression "(pcie->fdes_).super__Vector_base<gold" (field_expression "(pcie->fdes_).super__Vector_base" (parenthesized_expression "(pcie->fdes_)" ( (field_expression "pcie->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "local_6c = pCVar4;" (assignment_expression "local_6c = pCVar4" identifier = identifier) ;) (if_statement "if (ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n      _M_end_of_storage) {\n    *(Cie ***)((int)pppCVar8 + -8) = local_94;\n    *(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;\n    *(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;\n    *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;\n    std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));\n  }\n  else {\n    *ppFVar2 = (Fde *)pCVar4;\n    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;\n  }" if (parenthesized_expression "(ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n      _M_end_of_storage)" ( (field_expression "ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n      _M_end_of_storage" (field_expression "ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "ppFVar2 ==\n      (pcie->fdes_).super__Vector_base<gold" identifier == (binary_expression "(pcie->fdes_).super__Vector_base<gold" (field_expression "(pcie->fdes_).super__Vector_base" (parenthesized_expression "(pcie->fdes_)" ( (field_expression "pcie->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    *(Cie ***)((int)pppCVar8 + -8) = local_94;\n    *(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;\n    *(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;\n    *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;\n    std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));\n  }" { (expression_statement "*(Cie ***)((int)pppCVar8 + -8) = local_94;" (assignment_expression "*(Cie ***)((int)pppCVar8 + -8) = local_94" (pointer_expression "*(Cie ***)((int)pppCVar8 + -8)" * (cast_expression "(Cie ***)((int)pppCVar8 + -8)" ( (type_descriptor "Cie ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppCVar8 + -8)" ( (binary_expression "(int)pppCVar8 + -8" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(pointer *)((int)pppCVar8 + -0xc) = ppFVar2;" (assignment_expression "*(pointer *)((int)pppCVar8 + -0xc) = ppFVar2" (pointer_expression "*(pointer *)((int)pppCVar8 + -0xc)" * (cast_expression "(pointer *)((int)pppCVar8 + -0xc)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0xc)" ( (binary_expression "(int)pppCVar8 + -0xc" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;" (assignment_expression "*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10) = &pcie->fdes_" (pointer_expression "*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10)" * (call_expression "(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10)" (parenthesized_expression "(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)" ( (binary_expression "vector<gold::Fde*,_std::allocator<gold::Fde*>_> **" (binary_expression "vector<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "vector<gold::Fde*,_std::allocator<gold" (binary_expression "vector<gold::Fde*,_std" (binary_expression "vector<gold" identifier < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&pcie->fdes_" & (field_expression "pcie->fdes_" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae83" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x14)" ( (binary_expression "(int)pppCVar8 + -0x14" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (ERROR "std::vector<gold::Fde*,_std::allocator<gold::Fde*>_>::_M_realloc_insert<gold::" (comma_expression "std::vector<gold::Fde*,_std" identifier (ERROR "::vector<gold::Fde*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Fde*>_>::_M_realloc_insert<gold" (binary_expression "Fde*>_>::_M_realloc_insert" (binary_expression "Fde*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8));" (binary_expression "Fde*_const&>\n              (*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8))" (binary_expression "Fde*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8))" ( (comma_expression "*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10),\n               (iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8)" (pointer_expression "*(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10)" * (call_expression "(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)((int)pppCVar8 + -0x10)" (parenthesized_expression "(vector<gold::Fde*,_std::allocator<gold::Fde*>_> **)" ( (binary_expression "vector<gold::Fde*,_std::allocator<gold::Fde*>_> **" (binary_expression "vector<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "vector<gold::Fde*,_std::allocator<gold" (binary_expression "vector<gold::Fde*,_std" (binary_expression "vector<gold" identifier < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (comma_expression "(iterator)*(Fde ***)((int)pppCVar8 + -0xc),*(Fde ***)((int)pppCVar8 + -8)" (binary_expression "(iterator)*(Fde ***)((int)pppCVar8 + -0xc)" (parenthesized_expression "(iterator)" ( identifier )) * (cast_expression "(Fde ***)((int)pppCVar8 + -0xc)" ( (type_descriptor "Fde ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppCVar8 + -0xc)" ( (binary_expression "(int)pppCVar8 + -0xc" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(Fde ***)((int)pppCVar8 + -8)" * (cast_expression "(Fde ***)((int)pppCVar8 + -8)" ( (type_descriptor "Fde ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppCVar8 + -8)" ( (binary_expression "(int)pppCVar8 + -8" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ))) ;) }) (else_clause "else {\n    *ppFVar2 = (Fde *)pCVar4;\n    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;\n  }" else (compound_statement "{\n    *ppFVar2 = (Fde *)pCVar4;\n    (pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;\n  }" { (expression_statement "*ppFVar2 = (Fde *)pCVar4;" (assignment_expression "*ppFVar2 = (Fde *)pCVar4" (pointer_expression "*ppFVar2" * identifier) = (cast_expression "(Fde *)pCVar4" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1;" (assignment_expression "(pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n         ppFVar2 + 1" (field_expression "(pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "(pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(pcie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(pcie->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(pcie->fdes_).super__Vector_base<gold" (field_expression "(pcie->fdes_).super__Vector_base" (parenthesized_expression "(pcie->fdes_)" ( (field_expression "pcie->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "ppFVar2 + 1" identifier + number_literal)) ;) }))) (if_statement "if (this->mappings_are_done_ != false) {\n    p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }\n    else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }\n    local_98 = 0;\n    local_9c = (Cie_offsets *)(fde_length + 8);\n    pCVar7 = local_9c;\n    if (iVar6 != 0 || iVar5 != 0) {\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }\n    this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);\n  }" if (parenthesized_expression "(this->mappings_are_done_ != false)" ( (binary_expression "this->mappings_are_done_ != false" (field_expression "this->mappings_are_done_" identifier -> field_identifier) != false) )) (compound_statement "{\n    p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }\n    else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }\n    local_98 = 0;\n    local_9c = (Cie_offsets *)(fde_length + 8);\n    pCVar7 = local_9c;\n    if (iVar6 != 0 || iVar5 != 0) {\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }\n    this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);\n  }" { (expression_statement "p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];" (assignment_expression "p_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" (field_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)) {\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }\n    else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }" if (parenthesized_expression "(p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849))" ( (binary_expression "p_Var3 == (_func_int_varargs *)(unaff_EDI + -0x176849)" identifier == (cast_expression "(_func_int_varargs *)(unaff_EDI + -0x176849)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x176849)" ( (binary_expression "unaff_EDI + -0x176849" identifier + number_literal) )))) )) (compound_statement "{\n      iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);\n      iVar5 = (int)(this->super_Output_section_data).addralign_;\n    }" { (expression_statement "iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);" (assignment_expression "iVar6 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4)" identifier = (pointer_expression "*(int *)((int)&(this->super_Output_section_data).addralign_ + 4)" * (cast_expression "(int *)((int)&(this->super_Output_section_data).addralign_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_section_data).addralign_ + 4)" ( (binary_expression "(int)&(this->super_Output_section_data).addralign_ + 4" (cast_expression "(int)&(this->super_Output_section_data).addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_section_data).addralign_" & (field_expression "(this->super_Output_section_data).addralign_" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar5 = (int)(this->super_Output_section_data).addralign_;" (assignment_expression "iVar5 = (int)(this->super_Output_section_data).addralign_" identifier = (cast_expression "(int)(this->super_Output_section_data).addralign_" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->super_Output_section_data).addralign_" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier))) ;) }) (else_clause "else {\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }" else (compound_statement "{\n      *(Eh_frame **)((int)pppCVar8 + -0x10) = this;\n      *(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;\n      iVar5 = (*p_Var3)();\n      iVar6 = extraout_EDX;\n    }" { (expression_statement "*(Eh_frame **)((int)pppCVar8 + -0x10) = this;" (assignment_expression "*(Eh_frame **)((int)pppCVar8 + -0x10) = this" (pointer_expression "*(Eh_frame **)((int)pppCVar8 + -0x10)" * (cast_expression "(Eh_frame **)((int)pppCVar8 + -0x10)" ( (type_descriptor "Eh_frame **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ae98" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x14)" ( (binary_expression "(int)pppCVar8 + -0x14" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*p_Var3)();" (assignment_expression "iVar5 = (*p_Var3)()" identifier = (call_expression "(*p_Var3)()" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar6 = extraout_EDX;" (assignment_expression "iVar6 = extraout_EDX" identifier = identifier) ;) }))) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "local_9c = (Cie_offsets *)(fde_length + 8);" (assignment_expression "local_9c = (Cie_offsets *)(fde_length + 8)" identifier = (cast_expression "(Cie_offsets *)(fde_length + 8)" ( (type_descriptor "Cie_offsets *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(fde_length + 8)" ( (binary_expression "fde_length + 8" identifier + number_literal) )))) ;) (expression_statement "pCVar7 = local_9c;" (assignment_expression "pCVar7 = local_9c" identifier = identifier) ;) (if_statement "if (iVar6 != 0 || iVar5 != 0) {\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }" if (parenthesized_expression "(iVar6 != 0 || iVar5 != 0)" ( (binary_expression "iVar6 != 0 || iVar5 != 0" (binary_expression "iVar6 != 0" identifier != number_literal) || (binary_expression "iVar5 != 0" identifier != number_literal)) )) (compound_statement "{\n      pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);\n    }" { (expression_statement "pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5);" (assignment_expression "pCVar7 = (Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5)" identifier = (cast_expression "(Cie_offsets *)(fde_length + 7 + iVar5 & -iVar5)" ( (type_descriptor "Cie_offsets *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(fde_length + 7 + iVar5 & -iVar5)" ( (binary_expression "fde_length + 7 + iVar5 & -iVar5" (binary_expression "fde_length + 7 + iVar5" (binary_expression "fde_length + 7" identifier + number_literal) + identifier) & (unary_expression "-iVar5" - identifier)) )))) ;) })) (expression_statement "this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);" (assignment_expression "this->final_data_size_ =\n         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_)" (field_expression "this->final_data_size_" identifier -> field_identifier) = (call_expression "(section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_)" (parenthesized_expression "(section_size_type)" ( identifier )) (argument_list "(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_)" ( (binary_expression "&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_" (pointer_expression "&(pCVar7->_M_t)._M_impl.field_0x0" & (field_expression "(pCVar7->_M_t)._M_impl.field_0x0" (field_expression "(pCVar7->_M_t)._M_impl" (parenthesized_expression "(pCVar7->_M_t)" ( (field_expression "pCVar7->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier)) + (field_expression "this->final_data_size_" identifier -> field_identifier)) )))) ;) })) (expression_statement "*(Cie **)((int)pppCVar8 + -0x10) = local_90;" (assignment_expression "*(Cie **)((int)pppCVar8 + -0x10) = local_90" (pointer_expression "*(Cie **)((int)pppCVar8 + -0x10)" * (cast_expression "(Cie **)((int)pppCVar8 + -0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad89;" (assignment_expression "*(undefined4 *)((int)pppCVar8 + -0x14) = 0x21ad89" (pointer_expression "*(undefined4 *)((int)pppCVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)pppCVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0x14)" ( (binary_expression "(int)pppCVar8 + -0x14" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "Cie::~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));" (unary_expression "~Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc))" ~ (call_expression "Cie(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc))" identifier (argument_list "(*(Cie **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc))" ( (pointer_expression "*(Cie **)((int)pppCVar8 + -0x10)" * (cast_expression "(Cie **)((int)pppCVar8 + -0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppCVar8 + -0x10)" ( (binary_expression "(int)pppCVar8 + -0x10" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(int *)((int)pppCVar8 + -0xc)" * (cast_expression "(int *)((int)pppCVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppCVar8 + -0xc)" ( (binary_expression "(int)pppCVar8 + -0xc" (cast_expression "(int)pppCVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)\n\n{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}\n\n" (function_definition "void FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)\n\n{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}" primitive_type (function_declarator "FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)" identifier (parameter_list "(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 ***pppuVar6;" type_identifier (pointer_declarator "***pppuVar6" * (pointer_declarator "**pppuVar6" * (pointer_declarator "*pppuVar6" * identifier))) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "undefined4 **ppuStack_b4;" type_identifier (pointer_declarator "**ppuStack_b4" * (pointer_declarator "*ppuStack_b4" * identifier)) ;) (declaration "undefined4 auStack_b0 [3];" type_identifier (array_declarator "auStack_b0 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_a4;" type_identifier (pointer_declarator "*local_a4" * identifier) ;) (declaration "undefined4 *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "int *local_9c;" primitive_type (pointer_declarator "*local_9c" * identifier) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 **local_94;" type_identifier (pointer_declarator "**local_94" * (pointer_declarator "*local_94" * identifier)) ;) (declaration "undefined4 *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "undefined1 local_8c [12];" type_identifier (array_declarator "local_8c [12]" identifier [ number_literal ]) ;) (declaration "int *local_80 [4];" primitive_type (pointer_declarator "*local_80 [4]" * (array_declarator "local_80 [4]" identifier [ number_literal ])) ;) (declaration "undefined4 *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined4 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined1 local_50 [16];" type_identifier (array_declarator "local_50 [16]" identifier [ number_literal ]) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_000b484e();" (call_expression "FUN_000b484e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_58 = local_50;" (assignment_expression "local_58 = local_50" identifier = identifier) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "auStack_b0[0] = 0;" (assignment_expression "auStack_b0[0] = 0" (subscript_expression "auStack_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);" (assignment_expression "ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d)" identifier = (cast_expression "(undefined4 **)(unaff_EDI + 0xf657d)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0xf657d)" ( (binary_expression "unaff_EDI + 0xf657d" identifier + number_literal) )))) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_5c = 0x1b;" (assignment_expression "local_5c = 0x1b" identifier = number_literal) ;) (expression_statement "FUN_000a8880(&local_58,ppuStack_b4);" (call_expression "FUN_000a8880(&local_58,ppuStack_b4)" identifier (argument_list "(&local_58,ppuStack_b4)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "auStack_b0[0] = 0;" (assignment_expression "auStack_b0[0] = 0" (subscript_expression "auStack_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppuStack_b4 = (undefined4 **)(param_4 + param_3);" (assignment_expression "ppuStack_b4 = (undefined4 **)(param_4 + param_3)" identifier = (cast_expression "(undefined4 **)(param_4 + param_3)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + param_3)" ( (binary_expression "param_4 + param_3" identifier + identifier) )))) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "FUN_000a8880(&local_34,param_3);" (call_expression "FUN_000a8880(&local_34,param_3)" identifier (argument_list "(&local_34,param_3)" ( (pointer_expression "&local_34" & identifier) , identifier ))) ;) (expression_statement "local_90 = &local_68;" (assignment_expression "local_90 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_9c = param_1 + 0xc;" (assignment_expression "local_9c = param_1 + 0xc" identifier = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "ppuStack_b4 = &local_6c;" (assignment_expression "ppuStack_b4 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) (expression_statement "local_94 = &local_6c;" (assignment_expression "local_94 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) (expression_statement "local_6c = local_90;" (assignment_expression "local_6c = local_90" identifier = identifier) ;) (expression_statement "FUN_0021b4b0(local_80,local_9c);" (call_expression "FUN_0021b4b0(local_80,local_9c)" identifier (argument_list "(local_80,local_9c)" ( identifier , identifier ))) ;) (expression_statement "pppuVar6 = (undefined4 ***)auStack_b0;" (assignment_expression "pppuVar6 = (undefined4 ***)auStack_b0" identifier = (cast_expression "(undefined4 ***)auStack_b0" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (if_statement "if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }" if (parenthesized_expression "(local_80[0] == param_1 + 0xd)" ( (binary_expression "local_80[0] == param_1 + 0xd" (subscript_expression "local_80[0]" identifier [ number_literal ]) == (binary_expression "param_1 + 0xd" identifier + number_literal)) )) (compound_statement "{\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }" { (if_statement "if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }" if (parenthesized_expression "((char)param_1[0x15] != '\0')" ( (binary_expression "(char)param_1[0x15] != '\0'" (cast_expression "(char)param_1[0x15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x15]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }" { (expression_statement "ppuStack_b4 = &local_6c;" (assignment_expression "ppuStack_b4 = &local_6c" identifier = (pointer_expression "&local_6c" & identifier)) ;) (expression_statement "FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);" (call_expression "FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef)" identifier (argument_list "(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef)" ( (binary_expression "unaff_EDI + 0xf6d4e" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0xf6eef" identifier + number_literal) ))) ;) })) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x4c);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x4c)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x4c)" identifier (argument_list "(0x4c)" ( number_literal ))))) ;) (expression_statement "*puVar4 = local_68;" (assignment_expression "*puVar4 = local_68" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4[1] = local_64;" (assignment_expression "puVar4[1] = local_64" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = local_60;" (assignment_expression "puVar4[2] = local_60" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(puVar4 + 3) = local_5c;" (assignment_expression "*(undefined1 *)(puVar4 + 3) = local_5c" (pointer_expression "*(undefined1 *)(puVar4 + 3)" * (cast_expression "(undefined1 *)(puVar4 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_a0 = puVar4 + 6;" (assignment_expression "local_a0 = puVar4 + 6" identifier = (binary_expression "puVar4 + 6" identifier + number_literal)) ;) (expression_statement "puVar4[4] = local_a0;" (assignment_expression "puVar4[4] = local_a0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuStack_b4 = (undefined4 **)0x0;" (assignment_expression "ppuStack_b4 = (undefined4 **)0x0" identifier = (cast_expression "(undefined4 **)0x0" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);" (call_expression "FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54)" identifier (argument_list "(puVar4 + 4,local_58,local_58 + local_54)" ( (binary_expression "puVar4 + 4" identifier + number_literal) , identifier , (binary_expression "local_58 + local_54" identifier + identifier) ))) ;) (expression_statement "local_a4 = puVar4 + 0xf;" (assignment_expression "local_a4 = puVar4 + 0xf" identifier = (binary_expression "puVar4 + 0xf" identifier + number_literal)) ;) (expression_statement "puVar4[0xd] = local_a4;" (assignment_expression "puVar4[0xd] = local_a4" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xc] = 0;" (assignment_expression "puVar4[0xc] = 0" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "ppuStack_b4 = (undefined4 **)0x0;" (assignment_expression "ppuStack_b4 = (undefined4 **)0x0" identifier = (cast_expression "(undefined4 **)0x0" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);" (call_expression "FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30)" identifier (argument_list "(puVar4 + 0xd,local_34,local_34 + local_30)" ( (binary_expression "puVar4 + 0xd" identifier + number_literal) , identifier , (binary_expression "local_34 + local_30" identifier + identifier) ))) ;) (if_statement "if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }" if (parenthesized_expression "(local_3c != local_40)" ( (binary_expression "local_3c != local_40" identifier != identifier) )) (compound_statement "{\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }" { (expression_statement "FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);" (call_expression "FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb)" identifier (argument_list "(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb)" ( (binary_expression "unaff_EDI + 0xf700b" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0xf6eeb" identifier + number_literal) ))) ;) })) (expression_statement "local_70 = puVar4;" (assignment_expression "local_70 = puVar4" identifier = identifier) ;) (expression_statement "FUN_0021b540(local_8c,local_9c,&local_70);" (call_expression "FUN_0021b540(local_8c,local_9c,&local_70)" identifier (argument_list "(local_8c,local_9c,&local_70)" ( identifier , identifier , (pointer_expression "&local_70" & identifier) ))) ;) (expression_statement "pppuVar6 = &ppuStack_b4;" (assignment_expression "pppuVar6 = &ppuStack_b4" identifier = (pointer_expression "&ppuStack_b4" & identifier)) ;) }) (else_clause "else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }" else (compound_statement "{\n    local_70 = (undefined4 *)local_80[0][4];\n  }" { (expression_statement "local_70 = (undefined4 *)local_80[0][4];" (assignment_expression "local_70 = (undefined4 *)local_80[0][4]" identifier = (cast_expression "(undefined4 *)local_80[0][4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0][4]" (subscript_expression "local_80[0]" identifier [ number_literal ]) [ number_literal ]))) ;) }))) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x10) = 0x24" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar3 = (undefined4 *)FUN_00246670();" (assignment_expression "puVar3 = (undefined4 *)FUN_00246670()" identifier = (cast_expression "(undefined4 *)FUN_00246670()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "iVar2 = param_1[0x15];" (assignment_expression "iVar2 = param_1[0x15]" identifier = (subscript_expression "param_1[0x15]" identifier [ number_literal ])) ;) (expression_statement "puVar3[3] = puVar3 + 5;" (assignment_expression "puVar3[3] = puVar3 + 5" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (binary_expression "puVar3 + 5" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -4) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -4)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -4)" ( (binary_expression "(int)pppuVar6 + -4" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)pppuVar6 + -8) = param_5 + param_6;" (assignment_expression "*(int *)((int)pppuVar6 + -8) = param_5 + param_6" (pointer_expression "*(int *)((int)pppuVar6 + -8)" * (cast_expression "(int *)((int)pppuVar6 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -8)" ( (binary_expression "(int)pppuVar6 + -8" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_5 + param_6" identifier + identifier)) ;) (expression_statement "*(int *)((int)pppuVar6 + -0xc) = param_5;" (assignment_expression "*(int *)((int)pppuVar6 + -0xc) = param_5" (pointer_expression "*(int *)((int)pppuVar6 + -0xc)" * (cast_expression "(int *)((int)pppuVar6 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0xc)" ( (binary_expression "(int)pppuVar6 + -0xc" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "puVar3 + 3" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000a8880();" (call_expression "FUN_000a8880()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(char *)(puVar3 + 2) = (char)iVar2;" (assignment_expression "*(char *)(puVar3 + 2) = (char)iVar2" (pointer_expression "*(char *)(puVar3 + 2)" * (cast_expression "(char *)(puVar3 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 2)" ( (binary_expression "puVar3 + 2" identifier + number_literal) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3[1] = param_2;" (assignment_expression "puVar3[1] = param_2" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)local_70[0xb];" (assignment_expression "puVar4 = (undefined4 *)local_70[0xb]" identifier = (cast_expression "(undefined4 *)local_70[0xb]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_70[0xb]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = puVar3;" (assignment_expression "local_6c = puVar3" identifier = identifier) ;) (if_statement "if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" if (parenthesized_expression "(puVar4 == (undefined4 *)local_70[0xc])" ( (binary_expression "puVar4 == (undefined4 *)local_70[0xc]" identifier == (cast_expression "(undefined4 *)local_70[0xc]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_70[0xc]" identifier [ number_literal ]))) )) (compound_statement "{\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }" { (expression_statement "*(undefined4 ***)((int)pppuVar6 + -8) = local_94;" (assignment_expression "*(undefined4 ***)((int)pppuVar6 + -8) = local_94" (pointer_expression "*(undefined4 ***)((int)pppuVar6 + -8)" * (cast_expression "(undefined4 ***)((int)pppuVar6 + -8)" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppuVar6 + -8)" ( (binary_expression "(int)pppuVar6 + -8" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0xc) = puVar4" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0xc)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0xc)" ( (binary_expression "(int)pppuVar6 + -0xc" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "local_70 + 10" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021b240();" (call_expression "FUN_0021b240()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" else (compound_statement "{\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" { (expression_statement "*puVar4 = puVar3;" (assignment_expression "*puVar4 = puVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "local_70[0xb] = puVar4 + 1;" (assignment_expression "local_70[0xb] = puVar4 + 1" (subscript_expression "local_70[0xb]" identifier [ number_literal ]) = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }))) (if_statement "if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }" if (parenthesized_expression "((char)param_1[0x15] != '\0')" ( (binary_expression "(char)param_1[0x15] != '\0'" (cast_expression "(char)param_1[0x15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x15]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }" { (expression_statement "pcVar1 = *(code **)(*param_1 + 0xc);" (assignment_expression "pcVar1 = *(code **)(*param_1 + 0xc)" identifier = (pointer_expression "*(code **)(*param_1 + 0xc)" * (cast_expression "(code **)(*param_1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" if (parenthesized_expression "(pcVar1 == (code *)(unaff_EDI + -0x176849))" ( (binary_expression "pcVar1 == (code *)(unaff_EDI + -0x176849)" identifier == (cast_expression "(code *)(unaff_EDI + -0x176849)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x176849)" ( (binary_expression "unaff_EDI + -0x176849" identifier + number_literal) )))) )) (compound_statement "{\n      lVar7 = *(longlong *)(param_1 + 9);\n    }" { (expression_statement "lVar7 = *(longlong *)(param_1 + 9);" (assignment_expression "lVar7 = *(longlong *)(param_1 + 9)" identifier = (pointer_expression "*(longlong *)(param_1 + 9)" * (cast_expression "(longlong *)(param_1 + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" else (compound_statement "{\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" { (expression_statement "*(int **)((int)pppuVar6 + -0x10) = param_1;" (assignment_expression "*(int **)((int)pppuVar6 + -0x10) = param_1" (pointer_expression "*(int **)((int)pppuVar6 + -0x10)" * (cast_expression "(int **)((int)pppuVar6 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar7 = (*pcVar1)();" (assignment_expression "lVar7 = (*pcVar1)()" identifier = (call_expression "(*pcVar1)()" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "local_9c = (int *)(param_6 + 8);" (assignment_expression "local_9c = (int *)(param_6 + 8)" identifier = (cast_expression "(int *)(param_6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 8)" ( (binary_expression "param_6 + 8" identifier + number_literal) )))) ;) (expression_statement "piVar5 = local_9c;" (assignment_expression "piVar5 = local_9c" identifier = identifier) ;) (if_statement "if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }" { (expression_statement "piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);" (assignment_expression "piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7)" identifier = (cast_expression "(int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 7 + (int)lVar7 & -(int)lVar7)" ( (binary_expression "param_6 + 7 + (int)lVar7 & -(int)lVar7" (binary_expression "param_6 + 7 + (int)lVar7" (binary_expression "param_6 + 7" identifier + number_literal) + (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier)) & (unary_expression "-(int)lVar7" - (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) })) (expression_statement "param_1[0x16] = param_1[0x16] + (int)piVar5;" (assignment_expression "param_1[0x16] = param_1[0x16] + (int)piVar5" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = (binary_expression "param_1[0x16] + (int)piVar5" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) + (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = local_90;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = local_90" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" * (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pppuVar6 + -0x10)" ( (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" * (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppuVar6 + -0x14)" ( (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021a270();" (call_expression "FUN_0021a270()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (pointer_declarator * 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) & (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)\n\n{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0021ac10(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)" (identifier "FUN_0021ac10") (parameter_list "(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")"))) (compound_statement "{\n  code *pcVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 ***pppuVar6;\n  int unaff_EDI;\n  longlong lVar7;\n  undefined4 **ppuStack_b4;\n  undefined4 auStack_b0 [3];\n  undefined4 *local_a4;\n  undefined4 *local_a0;\n  int *local_9c;\n  undefined4 local_98;\n  undefined4 **local_94;\n  undefined4 *local_90;\n  undefined1 local_8c [12];\n  int *local_80 [4];\n  undefined4 *local_70;\n  undefined4 *local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined1 local_5c;\n  undefined1 *local_58;\n  int local_54;\n  undefined1 local_50 [16];\n  int local_40;\n  int local_3c;\n  undefined4 local_38;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000b484e();\n  local_58 = local_50;\n  local_68 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);\n  local_64 = 0;\n  local_60 = 0;\n  local_5c = 0x1b;\n  FUN_000a8880(&local_58,ppuStack_b4);\n  local_34 = local_2c;\n  local_40 = 0;\n  auStack_b0[0] = 0;\n  ppuStack_b4 = (undefined4 **)(param_4 + param_3);\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(&local_34,param_3);\n  local_90 = &local_68;\n  local_9c = param_1 + 0xc;\n  ppuStack_b4 = &local_6c;\n  local_94 = &local_6c;\n  local_6c = local_90;\n  FUN_0021b4b0(local_80,local_9c);\n  pppuVar6 = (undefined4 ***)auStack_b0;\n  if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }\n  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;\n  puVar3 = (undefined4 *)FUN_00246670();\n  *puVar3 = 0;\n  iVar2 = param_1[0x15];\n  puVar3[3] = puVar3 + 5;\n  *(undefined4 *)((int)pppuVar6 + -4) = 0;\n  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;\n  *(int *)((int)pppuVar6 + -0xc) = param_5;\n  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;\n                    \n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;\n  FUN_000a8880();\n  *(char *)(puVar3 + 2) = (char)iVar2;\n  puVar3[1] = param_2;\n  puVar4 = (undefined4 *)local_70[0xb];\n  local_6c = puVar3;\n  if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }\n  if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }\n  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;\n  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;\n  FUN_0021a270();\n  return;\n}" ({ "{") (declaration "code *pcVar1;" (type_identifier "code") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 ***pppuVar6;" (type_identifier "undefined4") (pointer_declarator "***pppuVar6" (* "*") (pointer_declarator "**pppuVar6" (* "*") (pointer_declarator "*pppuVar6" (* "*") (identifier "pppuVar6")))) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "longlong lVar7;" (type_identifier "longlong") (identifier "lVar7") (; ";")) (declaration "undefined4 **ppuStack_b4;" (type_identifier "undefined4") (pointer_declarator "**ppuStack_b4" (* "*") (pointer_declarator "*ppuStack_b4" (* "*") (identifier "ppuStack_b4"))) (; ";")) (declaration "undefined4 auStack_b0 [3];" (type_identifier "undefined4") (array_declarator "auStack_b0 [3]" (identifier "auStack_b0") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 *local_a4;" (type_identifier "undefined4") (pointer_declarator "*local_a4" (* "*") (identifier "local_a4")) (; ";")) (declaration "undefined4 *local_a0;" (type_identifier "undefined4") (pointer_declarator "*local_a0" (* "*") (identifier "local_a0")) (; ";")) (declaration "int *local_9c;" (primitive_type "int") (pointer_declarator "*local_9c" (* "*") (identifier "local_9c")) (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "undefined4 **local_94;" (type_identifier "undefined4") (pointer_declarator "**local_94" (* "*") (pointer_declarator "*local_94" (* "*") (identifier "local_94"))) (; ";")) (declaration "undefined4 *local_90;" (type_identifier "undefined4") (pointer_declarator "*local_90" (* "*") (identifier "local_90")) (; ";")) (declaration "undefined1 local_8c [12];" (type_identifier "undefined1") (array_declarator "local_8c [12]" (identifier "local_8c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int *local_80 [4];" (primitive_type "int") (pointer_declarator "*local_80 [4]" (* "*") (array_declarator "local_80 [4]" (identifier "local_80") ([ "[") (number_literal "4") (] "]"))) (; ";")) (declaration "undefined4 *local_70;" (type_identifier "undefined4") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "undefined4 *local_6c;" (type_identifier "undefined4") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined1 local_5c;" (type_identifier "undefined1") (identifier "local_5c") (; ";")) (declaration "undefined1 *local_58;" (type_identifier "undefined1") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "undefined1 local_50 [16];" (type_identifier "undefined1") (array_declarator "local_50 [16]" (identifier "local_50") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "FUN_000b484e();" (call_expression "FUN_000b484e()" (identifier "FUN_000b484e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_58 = local_50;" (assignment_expression "local_58 = local_50" (identifier "local_58") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_b0[0] = 0;" (assignment_expression "auStack_b0[0] = 0" (subscript_expression "auStack_b0[0]" (identifier "auStack_b0") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);" (assignment_expression "ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d)" (identifier "ppuStack_b4") (= "=") (cast_expression "(undefined4 **)(unaff_EDI + 0xf657d)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EDI + 0xf657d)" (( "(") (binary_expression "unaff_EDI + 0xf657d" (identifier "unaff_EDI") (+ "+") (number_literal "0xf657d")) () ")")))) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5c = 0x1b;" (assignment_expression "local_5c = 0x1b" (identifier "local_5c") (= "=") (number_literal "0x1b")) (; ";")) (expression_statement "FUN_000a8880(&local_58,ppuStack_b4);" (call_expression "FUN_000a8880(&local_58,ppuStack_b4)" (identifier "FUN_000a8880") (argument_list "(&local_58,ppuStack_b4)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "ppuStack_b4") () ")"))) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_b0[0] = 0;" (assignment_expression "auStack_b0[0] = 0" (subscript_expression "auStack_b0[0]" (identifier "auStack_b0") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "ppuStack_b4 = (undefined4 **)(param_4 + param_3);" (assignment_expression "ppuStack_b4 = (undefined4 **)(param_4 + param_3)" (identifier "ppuStack_b4") (= "=") (cast_expression "(undefined4 **)(param_4 + param_3)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + param_3)" (( "(") (binary_expression "param_4 + param_3" (identifier "param_4") (+ "+") (identifier "param_3")) () ")")))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000a8880(&local_34,param_3);" (call_expression "FUN_000a8880(&local_34,param_3)" (identifier "FUN_000a8880") (argument_list "(&local_34,param_3)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "local_90 = &local_68;" (assignment_expression "local_90 = &local_68" (identifier "local_90") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (expression_statement "local_9c = param_1 + 0xc;" (assignment_expression "local_9c = param_1 + 0xc" (identifier "local_9c") (= "=") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "ppuStack_b4 = &local_6c;" (assignment_expression "ppuStack_b4 = &local_6c" (identifier "ppuStack_b4") (= "=") (pointer_expression "&local_6c" (& "&") (identifier "local_6c"))) (; ";")) (expression_statement "local_94 = &local_6c;" (assignment_expression "local_94 = &local_6c" (identifier "local_94") (= "=") (pointer_expression "&local_6c" (& "&") (identifier "local_6c"))) (; ";")) (expression_statement "local_6c = local_90;" (assignment_expression "local_6c = local_90" (identifier "local_6c") (= "=") (identifier "local_90")) (; ";")) (expression_statement "FUN_0021b4b0(local_80,local_9c);" (call_expression "FUN_0021b4b0(local_80,local_9c)" (identifier "FUN_0021b4b0") (argument_list "(local_80,local_9c)" (( "(") (identifier "local_80") (, ",") (identifier "local_9c") () ")"))) (; ";")) (expression_statement "pppuVar6 = (undefined4 ***)auStack_b0;" (assignment_expression "pppuVar6 = (undefined4 ***)auStack_b0" (identifier "pppuVar6") (= "=") (cast_expression "(undefined4 ***)auStack_b0" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "auStack_b0"))) (; ";")) (if_statement "if (local_80[0] == param_1 + 0xd) {\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }\n  else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }" (if "if") (parenthesized_expression "(local_80[0] == param_1 + 0xd)" (( "(") (binary_expression "local_80[0] == param_1 + 0xd" (subscript_expression "local_80[0]" (identifier "local_80") ([ "[") (number_literal "0") (] "]")) (== "==") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd"))) () ")")) (compound_statement "{\n    if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }\n                    \n    puVar4 = (undefined4 *)FUN_00246670(0x4c);\n    *puVar4 = local_68;\n    puVar4[1] = local_64;\n    puVar4[2] = local_60;\n    *(undefined1 *)(puVar4 + 3) = local_5c;\n    local_a0 = puVar4 + 6;\n    puVar4[4] = local_a0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);\n    local_a4 = puVar4 + 0xf;\n    puVar4[0xd] = local_a4;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    puVar4[0xc] = 0;\n    ppuStack_b4 = (undefined4 **)0x0;\n                    \n    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);\n    if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }\n    local_70 = puVar4;\n                    \n    FUN_0021b540(local_8c,local_9c,&local_70);\n    pppuVar6 = &ppuStack_b4;\n  }" ({ "{") (if_statement "if ((char)param_1[0x15] != '\0') {\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }" (if "if") (parenthesized_expression "((char)param_1[0x15] != '\0')" (( "(") (binary_expression "(char)param_1[0x15] != '\0'" (cast_expression "(char)param_1[0x15]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      ppuStack_b4 = &local_6c;\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);\n    }" ({ "{") (expression_statement "ppuStack_b4 = &local_6c;" (assignment_expression "ppuStack_b4 = &local_6c" (identifier "ppuStack_b4") (= "=") (pointer_expression "&local_6c" (& "&") (identifier "local_6c"))) (; ";")) (expression_statement "FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);" (call_expression "FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef)" (identifier "FUN_000da200") (argument_list "(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef)" (( "(") (binary_expression "unaff_EDI + 0xf6d4e" (identifier "unaff_EDI") (+ "+") (number_literal "0xf6d4e")) (, ",") (number_literal "0x486") (, ",") (binary_expression "unaff_EDI + 0xf6eef" (identifier "unaff_EDI") (+ "+") (number_literal "0xf6eef")) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x4c);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x4c)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x4c)" (identifier "FUN_00246670") (argument_list "(0x4c)" (( "(") (number_literal "0x4c") () ")"))))) (; ";")) (expression_statement "*puVar4 = local_68;" (assignment_expression "*puVar4 = local_68" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "local_68")) (; ";")) (expression_statement "puVar4[1] = local_64;" (assignment_expression "puVar4[1] = local_64" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_64")) (; ";")) (expression_statement "puVar4[2] = local_60;" (assignment_expression "puVar4[2] = local_60" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined1 *)(puVar4 + 3) = local_5c;" (assignment_expression "*(undefined1 *)(puVar4 + 3) = local_5c" (pointer_expression "*(undefined1 *)(puVar4 + 3)" (* "*") (cast_expression "(undefined1 *)(puVar4 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 3)" (( "(") (binary_expression "puVar4 + 3" (identifier "puVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_a0 = puVar4 + 6;" (assignment_expression "local_a0 = puVar4 + 6" (identifier "local_a0") (= "=") (binary_expression "puVar4 + 6" (identifier "puVar4") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "puVar4[4] = local_a0;" (assignment_expression "puVar4[4] = local_a0" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_a0")) (; ";")) (expression_statement "ppuStack_b4 = (undefined4 **)0x0;" (assignment_expression "ppuStack_b4 = (undefined4 **)0x0" (identifier "ppuStack_b4") (= "=") (cast_expression "(undefined4 **)0x0" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);" (call_expression "FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54)" (identifier "FUN_000b8ec0") (argument_list "(puVar4 + 4,local_58,local_58 + local_54)" (( "(") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4")) (, ",") (identifier "local_58") (, ",") (binary_expression "local_58 + local_54" (identifier "local_58") (+ "+") (identifier "local_54")) () ")"))) (; ";")) (expression_statement "local_a4 = puVar4 + 0xf;" (assignment_expression "local_a4 = puVar4 + 0xf" (identifier "local_a4") (= "=") (binary_expression "puVar4 + 0xf" (identifier "puVar4") (+ "+") (number_literal "0xf"))) (; ";")) (expression_statement "puVar4[0xd] = local_a4;" (assignment_expression "puVar4[0xd] = local_a4" (subscript_expression "puVar4[0xd]" (identifier "puVar4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "local_a4")) (; ";")) (expression_statement "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" (identifier "puVar4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xc] = 0;" (assignment_expression "puVar4[0xc] = 0" (subscript_expression "puVar4[0xc]" (identifier "puVar4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "ppuStack_b4 = (undefined4 **)0x0;" (assignment_expression "ppuStack_b4 = (undefined4 **)0x0" (identifier "ppuStack_b4") (= "=") (cast_expression "(undefined4 **)0x0" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);" (call_expression "FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30)" (identifier "FUN_000b8ec0") (argument_list "(puVar4 + 0xd,local_34,local_34 + local_30)" (( "(") (binary_expression "puVar4 + 0xd" (identifier "puVar4") (+ "+") (number_literal "0xd")) (, ",") (identifier "local_34") (, ",") (binary_expression "local_34 + local_30" (identifier "local_34") (+ "+") (identifier "local_30")) () ")"))) (; ";")) (if_statement "if (local_3c != local_40) {\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }" (if "if") (parenthesized_expression "(local_3c != local_40)" (( "(") (binary_expression "local_3c != local_40" (identifier "local_3c") (!= "!=") (identifier "local_40")) () ")")) (compound_statement "{\n                    \n                    \n      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);\n    }" ({ "{") (expression_statement "FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);" (call_expression "FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb)" (identifier "FUN_000da200") (argument_list "(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb)" (( "(") (binary_expression "unaff_EDI + 0xf700b" (identifier "unaff_EDI") (+ "+") (number_literal "0xf700b")) (, ",") (number_literal "0x128") (, ",") (binary_expression "unaff_EDI + 0xf6eeb" (identifier "unaff_EDI") (+ "+") (number_literal "0xf6eeb")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_70 = puVar4;" (assignment_expression "local_70 = puVar4" (identifier "local_70") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "FUN_0021b540(local_8c,local_9c,&local_70);" (call_expression "FUN_0021b540(local_8c,local_9c,&local_70)" (identifier "FUN_0021b540") (argument_list "(local_8c,local_9c,&local_70)" (( "(") (identifier "local_8c") (, ",") (identifier "local_9c") (, ",") (pointer_expression "&local_70" (& "&") (identifier "local_70")) () ")"))) (; ";")) (expression_statement "pppuVar6 = &ppuStack_b4;" (assignment_expression "pppuVar6 = &ppuStack_b4" (identifier "pppuVar6") (= "=") (pointer_expression "&ppuStack_b4" (& "&") (identifier "ppuStack_b4"))) (; ";")) (} "}")) (else_clause "else {\n    local_70 = (undefined4 *)local_80[0][4];\n  }" (else "else") (compound_statement "{\n    local_70 = (undefined4 *)local_80[0][4];\n  }" ({ "{") (expression_statement "local_70 = (undefined4 *)local_80[0][4];" (assignment_expression "local_70 = (undefined4 *)local_80[0][4]" (identifier "local_70") (= "=") (cast_expression "(undefined4 *)local_80[0][4]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0][4]" (subscript_expression "local_80[0]" (identifier "local_80") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "4") (] "]")))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x10) = 0x24" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x10)" (( "(") (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x24")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x14)" (( "(") (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ace1")) (; ";")) (expression_statement "puVar3 = (undefined4 *)FUN_00246670();" (assignment_expression "puVar3 = (undefined4 *)FUN_00246670()" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)FUN_00246670()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670()" (identifier "FUN_00246670") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = param_1[0x15];" (assignment_expression "iVar2 = param_1[0x15]" (identifier "iVar2") (= "=") (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "puVar3[3] = puVar3 + 5;" (assignment_expression "puVar3[3] = puVar3 + 5" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "puVar3 + 5" (identifier "puVar3") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar6 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -4) = 0" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -4)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -4)" (( "(") (binary_expression "(int)pppuVar6 + -4" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)((int)pppuVar6 + -8) = param_5 + param_6;" (assignment_expression "*(int *)((int)pppuVar6 + -8) = param_5 + param_6" (pointer_expression "*(int *)((int)pppuVar6 + -8)" (* "*") (cast_expression "(int *)((int)pppuVar6 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -8)" (( "(") (binary_expression "(int)pppuVar6 + -8" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "param_5 + param_6" (identifier "param_5") (+ "+") (identifier "param_6"))) (; ";")) (expression_statement "*(int *)((int)pppuVar6 + -0xc) = param_5;" (assignment_expression "*(int *)((int)pppuVar6 + -0xc) = param_5" (pointer_expression "*(int *)((int)pppuVar6 + -0xc)" (* "*") (cast_expression "(int *)((int)pppuVar6 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0xc)" (( "(") (binary_expression "(int)pppuVar6 + -0xc" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x10)" (( "(") (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar3 + 3" (identifier "puVar3") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x14)" (( "(") (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ad0e")) (; ";")) (expression_statement "FUN_000a8880();" (call_expression "FUN_000a8880()" (identifier "FUN_000a8880") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(char *)(puVar3 + 2) = (char)iVar2;" (assignment_expression "*(char *)(puVar3 + 2) = (char)iVar2" (pointer_expression "*(char *)(puVar3 + 2)" (* "*") (cast_expression "(char *)(puVar3 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 2)" (( "(") (binary_expression "puVar3 + 2" (identifier "puVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)iVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "puVar3[1] = param_2;" (assignment_expression "puVar3[1] = param_2" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar4 = (undefined4 *)local_70[0xb];" (assignment_expression "puVar4 = (undefined4 *)local_70[0xb]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)local_70[0xb]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_70[0xb]" (identifier "local_70") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (expression_statement "local_6c = puVar3;" (assignment_expression "local_6c = puVar3" (identifier "local_6c") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if (puVar4 == (undefined4 *)local_70[0xc]) {\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }\n  else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" (if "if") (parenthesized_expression "(puVar4 == (undefined4 *)local_70[0xc])" (( "(") (binary_expression "puVar4 == (undefined4 *)local_70[0xc]" (identifier "puVar4") (== "==") (cast_expression "(undefined4 *)local_70[0xc]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_70[0xc]" (identifier "local_70") ([ "[") (number_literal "0xc") (] "]")))) () ")")) (compound_statement "{\n    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;\n    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;\n    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;\n    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;\n    FUN_0021b240();\n  }" ({ "{") (expression_statement "*(undefined4 ***)((int)pppuVar6 + -8) = local_94;" (assignment_expression "*(undefined4 ***)((int)pppuVar6 + -8) = local_94" (pointer_expression "*(undefined4 ***)((int)pppuVar6 + -8)" (* "*") (cast_expression "(undefined4 ***)((int)pppuVar6 + -8)" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppuVar6 + -8)" (( "(") (binary_expression "(int)pppuVar6 + -8" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_94")) (; ";")) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0xc) = puVar4" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0xc)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar6 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar6 + -0xc)" (( "(") (binary_expression "(int)pppuVar6 + -0xc" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x10)" (( "(") (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "local_70 + 10" (identifier "local_70") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x14)" (( "(") (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ae83")) (; ";")) (expression_statement "FUN_0021b240();" (call_expression "FUN_0021b240()" (identifier "FUN_0021b240") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" (else "else") (compound_statement "{\n    *puVar4 = puVar3;\n    local_70[0xb] = puVar4 + 1;\n  }" ({ "{") (expression_statement "*puVar4 = puVar3;" (assignment_expression "*puVar4 = puVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "local_70[0xb] = puVar4 + 1;" (assignment_expression "local_70[0xb] = puVar4 + 1" (subscript_expression "local_70[0xb]" (identifier "local_70") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if ((char)param_1[0x15] != '\0') {\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }" (if "if") (parenthesized_expression "((char)param_1[0x15] != '\0')" (( "(") (binary_expression "(char)param_1[0x15] != '\0'" (cast_expression "(char)param_1[0x15]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pcVar1 = *(code **)(*param_1 + 0xc);\n    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }\n    local_98 = 0;\n    local_9c = (int *)(param_6 + 8);\n    piVar5 = local_9c;\n    if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }\n    param_1[0x16] = param_1[0x16] + (int)piVar5;\n  }" ({ "{") (expression_statement "pcVar1 = *(code **)(*param_1 + 0xc);" (assignment_expression "pcVar1 = *(code **)(*param_1 + 0xc)" (identifier "pcVar1") (= "=") (pointer_expression "*(code **)(*param_1 + 0xc)" (* "*") (cast_expression "(code **)(*param_1 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {\n      lVar7 = *(longlong *)(param_1 + 9);\n    }\n    else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" (if "if") (parenthesized_expression "(pcVar1 == (code *)(unaff_EDI + -0x176849))" (( "(") (binary_expression "pcVar1 == (code *)(unaff_EDI + -0x176849)" (identifier "pcVar1") (== "==") (cast_expression "(code *)(unaff_EDI + -0x176849)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + -0x176849)" (( "(") (binary_expression "unaff_EDI + -0x176849" (identifier "unaff_EDI") (+ "+") (number_literal "-0x176849")) () ")")))) () ")")) (compound_statement "{\n      lVar7 = *(longlong *)(param_1 + 9);\n    }" ({ "{") (expression_statement "lVar7 = *(longlong *)(param_1 + 9);" (assignment_expression "lVar7 = *(longlong *)(param_1 + 9)" (identifier "lVar7") (= "=") (pointer_expression "*(longlong *)(param_1 + 9)" (* "*") (cast_expression "(longlong *)(param_1 + 9)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" (else "else") (compound_statement "{\n      *(int **)((int)pppuVar6 + -0x10) = param_1;\n      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;\n      lVar7 = (*pcVar1)();\n    }" ({ "{") (expression_statement "*(int **)((int)pppuVar6 + -0x10) = param_1;" (assignment_expression "*(int **)((int)pppuVar6 + -0x10) = param_1" (pointer_expression "*(int **)((int)pppuVar6 + -0x10)" (* "*") (cast_expression "(int **)((int)pppuVar6 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x10)" (( "(") (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x14)" (( "(") (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ae98")) (; ";")) (expression_statement "lVar7 = (*pcVar1)();" (assignment_expression "lVar7 = (*pcVar1)()" (identifier "lVar7") (= "=") (call_expression "(*pcVar1)()" (parenthesized_expression "(*pcVar1)" (( "(") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_9c = (int *)(param_6 + 8);" (assignment_expression "local_9c = (int *)(param_6 + 8)" (identifier "local_9c") (= "=") (cast_expression "(int *)(param_6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 8)" (( "(") (binary_expression "param_6 + 8" (identifier "param_6") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "piVar5 = local_9c;" (assignment_expression "piVar5 = local_9c" (identifier "piVar5") (= "=") (identifier "local_9c")) (; ";")) (if_statement "if (lVar7 != 0) {\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }" (if "if") (parenthesized_expression "(lVar7 != 0)" (( "(") (binary_expression "lVar7 != 0" (identifier "lVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);\n    }" ({ "{") (expression_statement "piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);" (assignment_expression "piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7)" (identifier "piVar5") (= "=") (cast_expression "(int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 7 + (int)lVar7 & -(int)lVar7)" (( "(") (binary_expression "param_6 + 7 + (int)lVar7 & -(int)lVar7" (binary_expression "param_6 + 7 + (int)lVar7" (binary_expression "param_6 + 7" (identifier "param_6") (+ "+") (number_literal "7")) (+ "+") (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7"))) (& "&") (unary_expression "-(int)lVar7" (- "-") (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")))) () ")")))) (; ";")) (} "}"))) (expression_statement "param_1[0x16] = param_1[0x16] + (int)piVar5;" (assignment_expression "param_1[0x16] = param_1[0x16] + (int)piVar5" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (binary_expression "param_1[0x16] + (int)piVar5" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (+ "+") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")))) (; ";")) (} "}"))) (expression_statement "*(undefined4 **)((int)pppuVar6 + -0x10) = local_90;" (assignment_expression "*(undefined4 **)((int)pppuVar6 + -0x10) = local_90" (pointer_expression "*(undefined4 **)((int)pppuVar6 + -0x10)" (* "*") (cast_expression "(undefined4 **)((int)pppuVar6 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x10)" (( "(") (binary_expression "(int)pppuVar6 + -0x10" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_90")) (; ";")) (expression_statement "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;" (assignment_expression "*(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89" (pointer_expression "*(undefined4 *)((int)pppuVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)pppuVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppuVar6 + -0x14)" (( "(") (binary_expression "(int)pppuVar6 + -0x14" (cast_expression "(int)pppuVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppuVar6")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21ad89")) (; ";")) (expression_statement "FUN_0021a270();" (call_expression "FUN_0021a270()" (identifier "FUN_0021a270") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void add_ehframe_for_plt(Eh_frame * this, Output_data * plt, uchar *
   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */

void __thiscall
var_11::type_1::function_1
          (type_1 *this,type_2 *plt,type_3 *var_13,size_t var_14,type_3 *var_20,
          size_t var_21)

{
  bool bVar1;
  type_4 var_22;
  type_5 *var_25;
  type_6 *pCVar4;
  int var_27;
  int var_26;
  int extraout_EDX;
  type_7 *pCVar7;
  type_6 ***pppCVar8;
  int var_10;
  type_6 **ppCStack_b0;
  type_8 auStack_ac [8];
  anon_union_16_2_edb7204a_for_basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>var_4
  *var_5;
  anon_union_16_2_edb7204a_for_basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>var_4
  *var_6;
  type_7 *local_9c;
  type_9 local_98;
  type_6 **local_94;
  type_6 *local_90;
  type_8 *var_19;
  type_6 *pcie;
  type_6 *local_6c;
  type_6 cie;
  
  var_7();
  cie.personality_name_._M_dataplus._M_p = (type_4)&cie.personality_name_.field_2;
  cie.object_ = (type_10 *)0x0;
  ppCStack_b0 = (type_6 **)0x0;
  cie.shndx_ = 0;
  cie.input_offset_ = 0;
  cie.fde_encoding_ = '\x1b';
  std::__cxx11::basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>::
  var_8<var_9*>(&cie.personality_name_,var_10 + 0xf657d,var_10 + 0xf657d);
  cie.contents_._M_dataplus._M_p = (type_4)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_start =
       (type_4)0x0;
  ppCStack_b0 = (type_6 **)0x0;
  cie.fdes_.super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_finish =
       (type_4)0x0;
  cie.fdes_.super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_end_of_storage =
       (type_4)0x0;
                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */
  std::__cxx11::basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>::
  var_8<var_9*>(&cie.contents_,var_13,var_13 + var_14);
  local_90 = &cie;
  local_9c = &this->cie_offsets_;
  local_94 = &local_6c;
  local_6c = local_90;
  std::
  _Rb_tree<var_11::type_6*,_gold::type_6*,var_12::_Identity<var_11::type_6*>,_gold::type_1::Cie_less,var_12::var_1<var_11::type_6*>var_3>
  ::var_15(&local_9c->_M_t,&local_6c);
  pppCVar8 = (type_6 ***)auStack_ac;
  if ((type_11 *)var_19 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {
    if (this->mappings_are_done_ != false) {
      ppCStack_b0 = &local_6c;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */
      var_16(&UNK_000f6d4e + var_10,0x486,&UNK_000f6eef + var_10);
    }
                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */
    pCVar4 = (type_6 *)var_17(0x4c);
    pCVar4->object_ = cie.object_;
    pCVar4->shndx_ = cie.shndx_;
    pCVar4->input_offset_ = cie.input_offset_;
    pCVar4->fde_encoding_ = cie.fde_encoding_;
    var_6 = &(pCVar4->personality_name_).field_2;
    (pCVar4->personality_name_)._M_dataplus._M_p = (type_4)var_6;
    ppCStack_b0 = (type_6 **)0x0;
                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */
    std::__cxx11::basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>::
    var_8<var_2*>(&pCVar4->personality_name_,cie.personality_name_._M_dataplus._M_p,
                        cie.personality_name_._M_dataplus._M_p +
                        cie.personality_name_._M_string_length);
    var_5 = &(pCVar4->contents_).field_2;
    (pCVar4->contents_)._M_dataplus._M_p = (type_4)var_5;
    (pCVar4->fdes_).super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_start =
         (type_4)0x0;
    (pCVar4->fdes_).super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_finish =
         (type_4)0x0;
    (pCVar4->fdes_).super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl.
    _M_end_of_storage = (type_4)0x0;
    ppCStack_b0 = (type_6 **)0x0;
                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */
    std::__cxx11::basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>::
    var_8<var_2*>(&pCVar4->contents_,cie.contents_._M_dataplus._M_p,
                        cie.contents_._M_dataplus._M_p + cie.contents_._M_string_length);
    if (cie.fdes_.super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_finish !=
        cie.fdes_.super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_start) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */
      var_16((char *)(var_10 + 0xf700b),0x128,&UNK_000f6eeb + var_10);
    }
    pcie = pCVar4;
                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */
    std::
    _Rb_tree<var_11::type_6*,_gold::type_6*,var_12::_Identity<var_11::type_6*>,_gold::type_1::Cie_less,var_12::var_1<var_11::type_6*>var_3>
    ::_M_insert_unique<var_11::type_6*var_18&>(&local_9c->_M_t,&pcie);
    pppCVar8 = &ppCStack_b0;
  }
  else {
    pcie = *(type_6 **)(var_19 + 0x10);
  }
  *(type_9 *)((int)pppCVar8 + -0x10) = 0x24;
                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */
  *(type_9 *)((int)pppCVar8 + -0x14) = 0x21ace1;
  pCVar4 = (type_6 *)var_17(*(type_12 *)((int)pppCVar8 + -0x10));
  pCVar4->object_ = (type_10 *)0x0;
  bVar1 = this->mappings_are_done_;
  (((type_13 *)&pCVar4->fde_encoding_)->_M_dataplus)._M_p =
       (type_4)&(pCVar4->personality_name_)._M_string_length;
  *(type_9 *)((int)pppCVar8 + -4) = 0;
  *(type_3 **)((int)pppCVar8 + -8) = var_20 + var_21;
  *(type_3 **)((int)pppCVar8 + -0xc) = var_20;
  *(type_13 **)((int)pppCVar8 + -0x10) = (type_13 *)&pCVar4->fde_encoding_;
                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */
  *(type_9 *)((int)pppCVar8 + -0x14) = 0x21ad0e;
  std::__cxx11::basic_string<var_2,var_12::char_traits<var_2>,var_12::var_1<var_2>var_3>::
  var_8<var_9*>();
  *(bool *)&pCVar4->input_offset_ = bVar1;
  (((type_14 *)&pCVar4->shndx_)->from_linker).plt = plt;
  var_22 = (pcie->fdes_).super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl.
            _M_finish;
  local_6c = pCVar4;
  if (var_22 ==
      (pcie->fdes_).super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl.
      _M_end_of_storage) {
    *(type_6 ***)((int)pppCVar8 + -8) = local_94;
    *(type_4 *)((int)pppCVar8 + -0xc) = var_22;
    *(var_23<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3> **)((int)pppCVar8 + -0x10) = &pcie->fdes_;
    *(type_9 *)((int)pppCVar8 + -0x14) = 0x21ae83;
    std::var_23<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>::_M_realloc_insert<var_11::var_24*var_18&>
              (*(var_23<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3> **)((int)pppCVar8 + -0x10),
               (iterator)*(var_24 ***)((int)pppCVar8 + -0xc),*(var_24 ***)((int)pppCVar8 + -8));
  }
  else {
    *var_22 = (var_24 *)pCVar4;
    (pcie->fdes_).super__Vector_base<var_11::var_24*,var_12::var_1<var_11::var_24*>var_3>._M_impl._M_finish =
         var_22 + 1;
  }
  if (this->mappings_are_done_ != false) {
    var_25 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
    if (var_25 == (type_5 *)(var_10 + -0x176849)) {
      var_26 = *(int *)((int)&(this->super_Output_section_data).addralign_ + 4);
      var_27 = (int)(this->super_Output_section_data).addralign_;
    }
    else {
      *(type_1 **)((int)pppCVar8 + -0x10) = this;
      *(type_9 *)((int)pppCVar8 + -0x14) = 0x21ae98;
      var_27 = (*var_25)();
      var_26 = extraout_EDX;
    }
    local_98 = 0;
    local_9c = (type_7 *)(var_21 + 8);
    pCVar7 = local_9c;
    if (var_26 != 0 || var_27 != 0) {
      pCVar7 = (type_7 *)(var_21 + 7 + var_27 & -var_27);
    }
    this->final_data_size_ =
         (section_size_type)(&(pCVar7->_M_t)._M_impl.field_0x0 + this->final_data_size_);
  }
  *(type_6 **)((int)pppCVar8 + -0x10) = local_90;
  *(type_9 *)((int)pppCVar8 + -0x14) = 0x21ad89;
  Cie::~type_6(*(type_6 **)((int)pppCVar8 + -0x10),*(int *)((int)pppCVar8 + -0xc));
  return;
}


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

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

{
  code *pcVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined4 ***pppuVar6;
  int unaff_EDI;
  longlong lVar7;
  undefined4 **ppuStack_b4;
  undefined4 auStack_b0 [3];
  undefined4 *local_a4;
  undefined4 *local_a0;
  int *local_9c;
  undefined4 local_98;
  undefined4 **local_94;
  undefined4 *local_90;
  undefined1 local_8c [12];
  int *local_80 [4];
  undefined4 *local_70;
  undefined4 *local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined1 local_5c;
  undefined1 *local_58;
  int local_54;
  undefined1 local_50 [16];
  int local_40;
  int local_3c;
  undefined4 local_38;
  undefined1 *local_34;
  int local_30;
  undefined1 local_2c [28];
  
  FUN_000b484e();
  local_58 = local_50;
  local_68 = 0;
  auStack_b0[0] = 0;
  ppuStack_b4 = (undefined4 **)(unaff_EDI + 0xf657d);
  local_64 = 0;
  local_60 = 0;
  local_5c = 0x1b;
  FUN_000a8880(&local_58,ppuStack_b4);
  local_34 = local_2c;
  local_40 = 0;
  auStack_b0[0] = 0;
  ppuStack_b4 = (undefined4 **)(param_4 + param_3);
  local_3c = 0;
  local_38 = 0;
                    /* try { // try from 0021ac87 to 0021ac8b has its CatchHandler @ 0021aedf */
  FUN_000a8880(&local_34,param_3);
  local_90 = &local_68;
  local_9c = param_1 + 0xc;
  ppuStack_b4 = &local_6c;
  local_94 = &local_6c;
  local_6c = local_90;
  FUN_0021b4b0(local_80,local_9c);
  pppuVar6 = (undefined4 ***)auStack_b0;
  if (local_80[0] == param_1 + 0xd) {
    if ((char)param_1[0x15] != '\0') {
      ppuStack_b4 = &local_6c;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aecf to 0021aed3 has its CatchHandler @ 0021aef5 */
      FUN_000da200(unaff_EDI + 0xf6d4e,0x486,unaff_EDI + 0xf6eef);
    }
                    /* try { // try from 0021adc4 to 0021adc8 has its CatchHandler @ 0021aef5 */
    puVar4 = (undefined4 *)FUN_00246670(0x4c);
    *puVar4 = local_68;
    puVar4[1] = local_64;
    puVar4[2] = local_60;
    *(undefined1 *)(puVar4 + 3) = local_5c;
    local_a0 = puVar4 + 6;
    puVar4[4] = local_a0;
    ppuStack_b4 = (undefined4 **)0x0;
                    /* try { // try from 0021ae02 to 0021ae06 has its CatchHandler @ 0021aefc */
    FUN_000b8ec0(puVar4 + 4,local_58,local_58 + local_54);
    local_a4 = puVar4 + 0xf;
    puVar4[0xd] = local_a4;
    puVar4[10] = 0;
    puVar4[0xb] = 0;
    puVar4[0xc] = 0;
    ppuStack_b4 = (undefined4 **)0x0;
                    /* try { // try from 0021ae3b to 0021ae3f has its CatchHandler @ 0021aed4 */
    FUN_000b8ec0(puVar4 + 0xd,local_34,local_34 + local_30);
    if (local_3c != local_40) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021aeb4 to 0021aeb8 has its CatchHandler @ 0021af07 */
      FUN_000da200(unaff_EDI + 0xf700b,0x128,unaff_EDI + 0xf6eeb);
    }
    local_70 = puVar4;
                    /* try { // try from 0021ae62 to 0021ae97 has its CatchHandler @ 0021aef5 */
    FUN_0021b540(local_8c,local_9c,&local_70);
    pppuVar6 = &ppuStack_b4;
  }
  else {
    local_70 = (undefined4 *)local_80[0][4];
  }
  *(undefined4 *)((int)pppuVar6 + -0x10) = 0x24;
                    /* try { // try from 0021acdc to 0021ace0 has its CatchHandler @ 0021aef5 */
  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ace1;
  puVar3 = (undefined4 *)FUN_00246670();
  *puVar3 = 0;
  iVar2 = param_1[0x15];
  puVar3[3] = puVar3 + 5;
  *(undefined4 *)((int)pppuVar6 + -4) = 0;
  *(int *)((int)pppuVar6 + -8) = param_5 + param_6;
  *(int *)((int)pppuVar6 + -0xc) = param_5;
  *(undefined4 **)((int)pppuVar6 + -0x10) = puVar3 + 3;
                    /* try { // try from 0021ad09 to 0021ad0d has its CatchHandler @ 0021aeea */
  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad0e;
  FUN_000a8880();
  *(char *)(puVar3 + 2) = (char)iVar2;
  puVar3[1] = param_2;
  puVar4 = (undefined4 *)local_70[0xb];
  local_6c = puVar3;
  if (puVar4 == (undefined4 *)local_70[0xc]) {
    *(undefined4 ***)((int)pppuVar6 + -8) = local_94;
    *(undefined4 **)((int)pppuVar6 + -0xc) = puVar4;
    *(undefined4 **)((int)pppuVar6 + -0x10) = local_70 + 10;
    *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae83;
    FUN_0021b240();
  }
  else {
    *puVar4 = puVar3;
    local_70[0xb] = puVar4 + 1;
  }
  if ((char)param_1[0x15] != '\0') {
    pcVar1 = *(code **)(*param_1 + 0xc);
    if (pcVar1 == (code *)(unaff_EDI + -0x176849)) {
      lVar7 = *(longlong *)(param_1 + 9);
    }
    else {
      *(int **)((int)pppuVar6 + -0x10) = param_1;
      *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ae98;
      lVar7 = (*pcVar1)();
    }
    local_98 = 0;
    local_9c = (int *)(param_6 + 8);
    piVar5 = local_9c;
    if (lVar7 != 0) {
      piVar5 = (int *)(param_6 + 7 + (int)lVar7 & -(int)lVar7);
    }
    param_1[0x16] = param_1[0x16] + (int)piVar5;
  }
  *(undefined4 **)((int)pppuVar6 + -0x10) = local_90;
  *(undefined4 *)((int)pppuVar6 + -0x14) = 0x21ad89;
  FUN_0021a270();
  return;
}

