
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void do_write(Output_section * this, Output_file * of) */

void __thiscall gold::Output_section::do_write(Output_section *this,Output_file *of)

{
  byte bVar1;
  _func_int_varargs *p_Var2;
  Output_fill *pOVar3;
  _List_node_base *p_Var4;
  int iVar5;
  uint64_t uVar6;
  undefined4 extraout_var;
  ulong uVar7;
  long lVar8;
  uint uVar9;
  Target *pTVar10;
  Relobj *this_00;
  size_type sVar11;
  pointer pFVar12;
  long lVar13;
  pointer pIVar14;
  ulong uVar15;
  string fill_data;
  
  if ((this->field_0xc8 & 0x20) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");
  }
  if ((this->field_0xca & 1) == 0) {
    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;
    lVar13 = (this->super_Output_data).offset_;
    pFVar12 = (this->fills_).
              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>
              ._M_impl._M_start;
    if (pFVar12 !=
        (this->fills_).
        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.
        _M_impl._M_finish) {
      pTVar10 = parameters->target_;
      if (pTVar10 != (Target *)0x0) {
        do {
          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);
          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,
                 fill_data._M_string_length);
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {
            operator_delete(fill_data._M_dataplus._M_p);
          }
          pFVar12 = pFVar12 + 1;
          if (pFVar12 ==
              (this->fills_).
              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>
              ._M_impl._M_finish) {
            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;
            goto LAB_001ee02e;
          }
          pTVar10 = parameters->target_;
        } while (pTVar10 != (Target *)0x0);
      }
LAB_001ee134:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x69,"target");
    }
  }
  else {
    if ((this->fills_).
        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.
        _M_impl._M_start !=
        (this->fills_).
        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.
        _M_impl._M_finish) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");
    }
    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;
LAB_001eded2:
    lVar13 = (this->super_Output_data).offset_;
  }
  pIVar14 = (this->input_sections_).
            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
            ._M_impl._M_start;
  uVar15 = this->first_input_offset_ + lVar13;
  if (pIVar14 !=
      (this->input_sections_).
      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
      ._M_impl._M_finish) {
    do {
      if (pIVar14->p2align_ == 0) {
        uVar9 = pIVar14->shndx_;
        if (0xfffffffb < uVar9) {
          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];
          if (p_Var2 == Output_section_data::do_addralign) {
            uVar6 = ((pIVar14->u2_).posd)->addralign_;
          }
          else {
            iVar5 = (*p_Var2)();
            uVar6 = CONCAT44(extraout_var,iVar5);
          }
          goto LAB_001edf5a;
        }
      }
      else {
        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);
LAB_001edf5a:
        if (uVar6 == 0) {
          uVar9 = pIVar14->shndx_;
        }
        else {
          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;
          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {
            pTVar10 = parameters->target_;
            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;
            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);
            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);
            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {
              operator_delete(fill_data._M_dataplus._M_p);
            }
          }
          uVar9 = pIVar14->shndx_;
          uVar15 = uVar7;
        }
      }
      if (uVar9 + 4 < 4) {
        this_00 = (pIVar14->u2_).object;
        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);
        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;
        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {
                    /* WARNING: Subroutine does not return */
          Input_section::data_size((Input_section *)this_00);
        }
        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;
      }
      else {
LAB_001edf10:
        sVar11 = (pIVar14->u1_).data_size;
      }
      uVar15 = uVar15 + sVar11;
      pIVar14 = pIVar14 + 1;
    } while ((this->input_sections_).
             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
             ._M_impl._M_finish != pIVar14);
  }
  pOVar3 = this->free_space_fill_;
  if (pOVar3 != (Output_fill *)0x0) {
    p_Var4 = (this->free_list_).list_.
             super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
             ._M_impl._M_node.super__List_node_base._M_next;
    if ((Free_list *)p_Var4 != &this->free_list_) {
      lVar13 = (long)p_Var4[1]._M_next;
      lVar8 = (long)p_Var4[1]._M_prev - lVar13;
      bVar1 = (this->super_Output_data).field_0x20;
      while ((bVar1 & 4) != 0) {
        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);
        p_Var4 = p_Var4->_M_next;
        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;
        lVar13 = (long)p_Var4[1]._M_next;
        pOVar3 = this->free_space_fill_;
        lVar8 = (long)p_Var4[1]._M_prev - lVar13;
        bVar1 = (this->super_Output_data).field_0x20;
      }
LAB_001ee02e:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0xe3,"offset");
    }
LAB_001ee0f4:
    if (0 < this->patch_space_) {
      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;
      (*this->free_space_fill_->_vptr_Output_fill[3])
                (this->free_space_fill_,of,
                 ((this->super_Output_data).data_size_ - this->patch_space_) +
                 (this->super_Output_data).offset_);
    }
  }
  return;
}



void FUN_001ede00(long param_1,long param_2)

{
  byte bVar1;
  code *pcVar2;
  long lVar3;
  ulong uVar4;
  long lVar5;
  uint uVar6;
  long *plVar7;
  long *plVar8;
  uint *puVar9;
  ulong uVar10;
  undefined1 *local_58;
  size_t local_50;
  undefined1 local_48 [24];
  
  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/output.cc",0xe99,"do_write");
  }
  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {
    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;
    lVar3 = *(long *)(param_1 + 0x18);
    plVar8 = *(long **)(param_1 + 0xa8);
    if (plVar8 != *(long **)(param_1 + 0xb0)) {
      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);
      if (plVar7 != (long *)0x0) {
        do {
          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);
          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);
          if (local_58 != local_48) {
            FUN_002a2980();
          }
          plVar8 = plVar8 + 2;
          if (plVar8 == *(long **)(param_1 + 0xb0)) {
            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;
            goto LAB_001ee02e;
          }
          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);
        } while (plVar7 != (long *)0x0);
      }
LAB_001ee134:
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/parameters.h",0x69,"target");
    }
  }
  else {
    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");
    }
    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;
LAB_001eded2:
    lVar3 = *(long *)(param_1 + 0x18);
  }
  puVar9 = *(uint **)(param_1 + 0x88);
  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;
  if (puVar9 != *(uint **)(param_1 + 0x90)) {
    do {
      if (puVar9[1] == 0) {
        uVar6 = *puVar9;
        if (0xfffffffb < uVar6) {
          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);
          if (pcVar2 == FUN_00168610) {
            lVar3 = (*(long **)(puVar9 + 4))[6];
          }
          else {
            lVar3 = (*pcVar2)();
          }
          goto LAB_001edf5a;
        }
      }
      else {
        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);
LAB_001edf5a:
        if (lVar3 == 0) {
          uVar6 = *puVar9;
        }
        else {
          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;
          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {
            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);
            if (plVar8 == (long *)0x0) goto LAB_001ee134;
            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);
            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);
            if (local_58 != local_48) {
              FUN_002a2980();
            }
          }
          uVar6 = *puVar9;
          uVar10 = uVar4;
        }
      }
      if ((uVar6 + 4 < 4) &&
         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),
         0xfffffffb < *puVar9)) {
        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_001ed720();
        }
        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);
      }
      else {
        lVar3 = *(long *)(puVar9 + 2);
      }
      uVar10 = uVar10 + lVar3;
      puVar9 = puVar9 + 8;
    } while (*(uint **)(param_1 + 0x90) != puVar9);
  }
  plVar8 = *(long **)(param_1 + 0x130);
  if (plVar8 != (long *)0x0) {
    plVar7 = *(long **)(param_1 + 0xf8);
    if (plVar7 != (long *)(param_1 + 0xf8)) {
      lVar3 = plVar7[2];
      lVar5 = plVar7[3] - lVar3;
      bVar1 = *(byte *)(param_1 + 0x20);
      while ((bVar1 & 4) != 0) {
        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);
        plVar7 = (long *)*plVar7;
        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;
        lVar3 = plVar7[2];
        plVar8 = *(long **)(param_1 + 0x130);
        lVar5 = plVar7[3] - lVar3;
        bVar1 = *(byte *)(param_1 + 0x20);
      }
LAB_001ee02e:
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/output.h",0xe3,"offset");
    }
LAB_001ee0f4:
    if (0 < *(long *)(param_1 + 0x138)) {
      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;
      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))
                (*(long **)(param_1 + 0x130),param_2,
                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +
                 *(long *)(param_1 + 0x18));
    }
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
TEST byte ptr [RDI + 0xc8],0x20
JNZ 0x001ee151
MOV RBX,RDI
MOV RBP,RSI
TEST byte ptr [RDI + 0xca],0x1
JNZ 0x001ee010
TEST byte ptr [RDI + 0x20],0x4
JZ 0x001ee02e
MOV R13,qword ptr [RDI + 0x18]
MOV R12,qword ptr [RDI + 0xa8]
CMP R12,qword ptr [RDI + 0xb0]
JZ 0x001eded6
MOV RAX,qword ptr [0x003f85c0]
MOV RSI,qword ptr [RAX + 0x18]
TEST RSI,RSI
JZ 0x001ee134
LEA R14,[RSP + 0x10]
LEA R15,[R14 + 0x10]
JMP 0x001ede84
MOV RAX,qword ptr [0x003f85c0]
MOV RSI,qword ptr [RAX + 0x18]
TEST RSI,RSI
JZ 0x001ee134
MOV RAX,qword ptr [RSI]
MOV RDX,qword ptr [R12 + 0x8]
MOV RDI,R14
CALL qword ptr [RAX + 0x30]
MOV RDI,qword ptr [R12]
MOV RDX,qword ptr [RSP + 0x18]
MOV RSI,qword ptr [RSP + 0x10]
ADD RDI,R13
ADD RDI,qword ptr [RBP + 0x18]
CALL 0x00144a90
MOV RDI,qword ptr [RSP + 0x10]
CMP RDI,R15
JZ 0x001edebb
CALL 0x002a2980
ADD R12,0x10
CMP R12,qword ptr [RBX + 0xb0]
JNZ 0x001ede70
TEST byte ptr [RBX + 0x20],0x4
JZ 0x001ee02e
MOV R13,qword ptr [RBX + 0x18]
MOV R15,qword ptr [RBX + 0xa0]
MOV R14,qword ptr [RBX + 0x88]
ADD R15,R13
CMP R14,qword ptr [RBX + 0x90]
JZ 0x001ee080
LEA RAX,[RSP + 0x10]
LEA R12,[0x168610]
MOV qword ptr [RSP],RAX
LEA RAX,[RSP + 0x20]
MOV qword ptr [RSP + 0x8],RAX
JMP 0x001edf2a
MOV R9,qword ptr [R14 + 0x8]
LEA R15,[R13 + R9*0x1]
ADD R14,0x20
CMP qword ptr [RBX + 0x90],R14
JZ 0x001ee080
MOV ECX,dword ptr [R14 + 0x4]
TEST ECX,ECX
JNZ 0x001ee060
MOV EDX,dword ptr [R14]
CMP EDX,-0x4
JC 0x001ee053
MOV RDI,qword ptr [R14 + 0x10]
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,R12
JNZ 0x001ee070
MOV RAX,qword ptr [RDI + 0x30]
TEST RAX,RAX
JZ 0x001ee050
LEA RCX,[R15 + RAX*0x1 + -0x1]
NEG RAX
AND RCX,RAX
MOV R13,RCX
TEST byte ptr [RBX + 0xca],0x1
JZ 0x001edfca
CMP R15,RCX
JZ 0x001edfca
MOV RAX,qword ptr [0x003f85c0]
MOV RDX,RCX
SUB RDX,R15
MOV RSI,qword ptr [RAX + 0x18]
TEST RSI,RSI
JZ 0x001ee134
MOV RAX,qword ptr [RSI]
MOV RDI,qword ptr [RSP]
CALL qword ptr [RAX + 0x30]
MOV RDI,qword ptr [RBP + 0x18]
MOV RDX,qword ptr [RSP + 0x18]
MOV RSI,qword ptr [RSP + 0x10]
ADD RDI,R15
CALL 0x00144a90
MOV RDI,qword ptr [RSP + 0x10]
CMP RDI,qword ptr [RSP + 0x8]
JZ 0x001edfca
CALL 0x002a2980
MOV EDX,dword ptr [R14]
ADD EDX,0x4
CMP EDX,0x3
JA 0x001edf10
MOV RDI,qword ptr [R14 + 0x10]
MOV RSI,RBP
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x10]
CMP dword ptr [R14],-0x4
JC 0x001edf10
MOV RAX,qword ptr [R14 + 0x10]
TEST byte ptr [RAX + 0x20],0x2
JZ 0x001ee14c
MOV R9,qword ptr [RAX + 0x10]
JMP 0x001edf14
MOV RAX,qword ptr [RDI + 0xb0]
CMP qword ptr [RDI + 0xa8],RAX
JNZ 0x001ee169
TEST byte ptr [RDI + 0x20],0x4
JNZ 0x001eded2
LEA RDX,[0x34beef]
MOV ESI,0xe3
LEA RDI,[0x338384]
CALL 0x00199900
MOV EDX,dword ptr [R14]
MOV R13,R15
JMP 0x001edfcd
SUB ECX,0x1
MOV EAX,0x1
SHL RAX,CL
JMP 0x001edf5a
CALL RAX
JMP 0x001edf5a
MOV RDI,qword ptr [RBX + 0x130]
TEST RDI,RDI
JZ 0x001ee125
MOV R12,qword ptr [RBX + 0xf8]
LEA R13,[RBX + 0xf8]
CMP R12,R13
JZ 0x001ee0f4
MOV RDX,qword ptr [R12 + 0x10]
MOV RCX,qword ptr [R12 + 0x18]
SUB RCX,RDX
TEST byte ptr [RBX + 0x20],0x4
JNZ 0x001ee0de
JMP 0x001ee02e
MOV RDX,qword ptr [R12 + 0x10]
MOV RCX,qword ptr [R12 + 0x18]
MOV RDI,qword ptr [RBX + 0x130]
SUB RCX,RDX
TEST byte ptr [RBX + 0x20],0x4
JZ 0x001ee02e
MOV RAX,qword ptr [RDI]
ADD RDX,qword ptr [RBX + 0x18]
MOV RSI,RBP
CALL qword ptr [RAX + 0x18]
MOV R12,qword ptr [R12]
CMP R12,R13
JNZ 0x001ee0c0
MOV RCX,qword ptr [RBX + 0x138]
TEST RCX,RCX
JLE 0x001ee125
MOV RDX,qword ptr [RBX + 0x10]
MOV RDI,qword ptr [RBX + 0x130]
SUB RDX,RCX
TEST byte ptr [RBX + 0x20],0x4
JZ 0x001ee02e
MOV RAX,qword ptr [RDI]
ADD RDX,qword ptr [RBX + 0x18]
MOV RSI,RBP
CALL qword ptr [RAX + 0x18]
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDX,[0x34bfdb]
MOV ESI,0x69
LEA RDI,[0x333279]
CALL 0x00199900
CALL 0x001ed720
LEA RDX,[0x34b7d0]
MOV ESI,0xe99
LEA RDI,[0x34a556]
CALL 0x00199900
LEA RDX,[0x34b7d0]
MOV ESI,0xe9c
LEA RDI,[0x34a556]
CALL 0x00199900
(translation_unit "void FUN_001ede00(long param_1,long param_2)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001ede00(long param_1,long param_2)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001ede00(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (if_statement "if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 200) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_1 + 200) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_1 + 200) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 200) & 0x20" (pointer_expression "*(byte *)(param_1 + 200)" * (cast_expression "(byte *)(param_1 + 200)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }" { comment (expression_statement "FUN_00199900("../../gold/output.cc",0xe99,"do_write");" (call_expression "FUN_00199900("../../gold/output.cc",0xe99,"do_write")" identifier (argument_list "("../../gold/output.cc",0xe99,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xca) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0xca) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xca) & 1)" ( (binary_expression "*(byte *)(param_1 + 0xca) & 1" (pointer_expression "*(byte *)(param_1 + 0xca)" * (cast_expression "(byte *)(param_1 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xca)" ( (binary_expression "param_1 + 0xca" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }" { (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "plVar8 = *(long **)(param_1 + 0xa8);" (assignment_expression "plVar8 = *(long **)(param_1 + 0xa8)" identifier = (pointer_expression "*(long **)(param_1 + 0xa8)" * (cast_expression "(long **)(param_1 + 0xa8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) ))))) ;) (if_statement "if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(plVar8 != *(long **)(param_1 + 0xb0))" ( (binary_expression "plVar8 != *(long **)(param_1 + 0xb0)" identifier != (pointer_expression "*(long **)(param_1 + 0xb0)" * (cast_expression "(long **)(param_1 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) (compound_statement "{\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }" { (expression_statement "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }" if (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }" { (do_statement "do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);" do (compound_statement "{\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        }" { (expression_statement "(**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);" (call_expression "(**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1])" (parenthesized_expression "(**(code **)(*plVar7 + 0x30))" ( (pointer_expression "**(code **)(*plVar7 + 0x30)" * (pointer_expression "*(code **)(*plVar7 + 0x30)" * (cast_expression "(code **)(*plVar7 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar7 + 0x30)" ( (binary_expression "*plVar7 + 0x30" (pointer_expression "*plVar7" * identifier) + number_literal) ))))) )) (argument_list "(&local_58,plVar7,plVar8[1])" ( (pointer_expression "&local_58" & identifier) , identifier , (subscript_expression "plVar8[1]" identifier [ number_literal ]) ))) ;) (expression_statement "memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);" (call_expression "memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50)" identifier (argument_list "((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50)" ( (cast_expression "(void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar8 + lVar3 + *(long *)(param_2 + 0x18))" ( (binary_expression "*plVar8 + lVar3 + *(long *)(param_2 + 0x18)" (binary_expression "*plVar8 + lVar3" (pointer_expression "*plVar8" * identifier) + identifier) + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ))) , identifier , identifier ))) ;) (if_statement "if (local_58 != local_48) {\n            FUN_002a2980();\n          }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n            FUN_002a2980();\n          }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar8 = plVar8 + 2;" (assignment_expression "plVar8 = plVar8 + 2" identifier = (binary_expression "plVar8 + 2" identifier + number_literal)) ;) (if_statement "if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" if (parenthesized_expression "(plVar8 == *(long **)(param_1 + 0xb0))" ( (binary_expression "plVar8 == *(long **)(param_1 + 0xb0)" identifier == (pointer_expression "*(long **)(param_1 + 0xb0)" * (cast_expression "(long **)(param_1 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) (compound_statement "{\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" { (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001eded2;" goto statement_identifier ;)) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;) })) (expression_statement "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) }) (else_clause "else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" else (compound_statement "{\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" { (if_statement "if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0))" ( (binary_expression "*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)" (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) != (pointer_expression "*(long *)(param_1 + 0xb0)" * (cast_expression "(long *)(param_1 + 0xb0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }" { comment (expression_statement "FUN_00199900("../../gold/output.cc",0xe9c,"do_write");" (call_expression "FUN_00199900("../../gold/output.cc",0xe9c,"do_write")" identifier (argument_list "("../../gold/output.cc",0xe9c,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (labeled_statement "LAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);" statement_identifier : (expression_statement "lVar3 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) }))) (expression_statement "puVar9 = *(uint **)(param_1 + 0x88);" (assignment_expression "puVar9 = *(uint **)(param_1 + 0x88)" identifier = (pointer_expression "*(uint **)(param_1 + 0x88)" * (cast_expression "(uint **)(param_1 + 0x88)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(long *)(param_1 + 0xa0) + lVar3;" (assignment_expression "uVar10 = *(long *)(param_1 + 0xa0) + lVar3" identifier = (binary_expression "*(long *)(param_1 + 0xa0) + lVar3" (pointer_expression "*(long *)(param_1 + 0xa0)" * (cast_expression "(long *)(param_1 + 0xa0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }" if (parenthesized_expression "(puVar9 != *(uint **)(param_1 + 0x90))" ( (binary_expression "puVar9 != *(uint **)(param_1 + 0x90)" identifier != (pointer_expression "*(uint **)(param_1 + 0x90)" * (cast_expression "(uint **)(param_1 + 0x90)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }" { (do_statement "do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);" do (compound_statement "{\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    }" { (if_statement "if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" if (parenthesized_expression "(puVar9[1] == 0)" ( (binary_expression "puVar9[1] == 0" (subscript_expression "puVar9[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }" { (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }" if (parenthesized_expression "(0xfffffffb < uVar6)" ( (binary_expression "0xfffffffb < uVar6" number_literal < identifier) )) (compound_statement "{\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }" { (expression_statement "pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);" (assignment_expression "pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18)" identifier = (pointer_expression "*(code **)(**(long **)(puVar9 + 4) + 0x18)" * (cast_expression "(code **)(**(long **)(puVar9 + 4) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(puVar9 + 4) + 0x18)" ( (binary_expression "**(long **)(puVar9 + 4) + 0x18" (pointer_expression "**(long **)(puVar9 + 4)" * (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }" if (parenthesized_expression "(pcVar2 == FUN_00168610)" ( (binary_expression "pcVar2 == FUN_00168610" identifier == identifier) )) (compound_statement "{\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }" { (expression_statement "lVar3 = (*(long **)(puVar9 + 4))[6];" (assignment_expression "lVar3 = (*(long **)(puVar9 + 4))[6]" identifier = (subscript_expression "(*(long **)(puVar9 + 4))[6]" (parenthesized_expression "(*(long **)(puVar9 + 4))" ( (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) }) (else_clause "else {\n            lVar3 = (*pcVar2)();\n          }" else (compound_statement "{\n            lVar3 = (*pcVar2)();\n          }" { (expression_statement "lVar3 = (*pcVar2)();" (assignment_expression "lVar3 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) }))) (goto_statement "goto LAB_001edf5a;" goto statement_identifier ;) })) }) (else_clause "else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" else (compound_statement "{\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" { (expression_statement "lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);" (assignment_expression "lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f)" identifier = (binary_expression "1L << ((char)puVar9[1] - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)puVar9[1] - 1U & 0x3f)" ( (binary_expression "(char)puVar9[1] - 1U & 0x3f" (binary_expression "(char)puVar9[1] - 1U" (cast_expression "(char)puVar9[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar9[1]" identifier [ number_literal ])) - number_literal) & number_literal) )))) ;) (labeled_statement "LAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" statement_identifier : (if_statement "if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar6 = *puVar9;\n        }" { (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) }) (else_clause "else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" else (compound_statement "{\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" { (expression_statement "uVar4 = (uVar10 - 1) + lVar3 & -lVar3;" (assignment_expression "uVar4 = (uVar10 - 1) + lVar3 & -lVar3" identifier = (binary_expression "(uVar10 - 1) + lVar3 & -lVar3" (binary_expression "(uVar10 - 1) + lVar3" (parenthesized_expression "(uVar10 - 1)" ( (binary_expression "uVar10 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-lVar3" - identifier))) ;) (if_statement "if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }" if (parenthesized_expression "(((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4))" ( (binary_expression "((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)" (parenthesized_expression "((*(byte *)(param_1 + 0xca) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xca) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xca) & 1)" ( (binary_expression "*(byte *)(param_1 + 0xca) & 1" (pointer_expression "*(byte *)(param_1 + 0xca)" * (cast_expression "(byte *)(param_1 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xca)" ( (binary_expression "param_1 + 0xca" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(uVar10 != uVar4)" ( (binary_expression "uVar10 != uVar4" identifier != identifier) ))) )) (compound_statement "{\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }" { (expression_statement "plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar8 == (long *)0x0) goto LAB_001ee134;" if (parenthesized_expression "(plVar8 == (long *)0x0)" ( (binary_expression "plVar8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001ee134;" goto statement_identifier ;)) (expression_statement "(**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);" (call_expression "(**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10)" (parenthesized_expression "(**(code **)(*plVar8 + 0x30))" ( (pointer_expression "**(code **)(*plVar8 + 0x30)" * (pointer_expression "*(code **)(*plVar8 + 0x30)" * (cast_expression "(code **)(*plVar8 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar8 + 0x30)" ( (binary_expression "*plVar8 + 0x30" (pointer_expression "*plVar8" * identifier) + number_literal) ))))) )) (argument_list "(&local_58,plVar8,uVar4 - uVar10)" ( (pointer_expression "&local_58" & identifier) , identifier , (binary_expression "uVar4 - uVar10" identifier - identifier) ))) ;) (expression_statement "memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);" (call_expression "memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50)" identifier (argument_list "((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50)" ( (cast_expression "(void *)(*(long *)(param_2 + 0x18) + uVar10)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x18) + uVar10)" ( (binary_expression "*(long *)(param_2 + 0x18) + uVar10" (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) + identifier) ))) , identifier , identifier ))) ;) (if_statement "if (local_58 != local_48) {\n              FUN_002a2980();\n            }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n              FUN_002a2980();\n            }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) })))) }))) (if_statement "if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }" if (parenthesized_expression "((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9))" ( (binary_expression "(uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)" (parenthesized_expression "(uVar6 + 4 < 4)" ( (binary_expression "uVar6 + 4 < 4" (binary_expression "uVar6 + 4" identifier + number_literal) < number_literal) )) && (parenthesized_expression "((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)" ( (comma_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9" (call_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2)" (parenthesized_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))" ( (pointer_expression "**(code **)(**(long **)(puVar9 + 4) + 0x10)" * (pointer_expression "*(code **)(**(long **)(puVar9 + 4) + 0x10)" * (cast_expression "(code **)(**(long **)(puVar9 + 4) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(puVar9 + 4) + 0x10)" ( (binary_expression "**(long **)(puVar9 + 4) + 0x10" (pointer_expression "**(long **)(puVar9 + 4)" * (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(puVar9 + 4),param_2)" ( (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) , identifier ))) , (binary_expression "0xfffffffb < *puVar9" number_literal < (pointer_expression "*puVar9" * identifier))) ))) )) (compound_statement "{\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }" { (if_statement "if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }" if (parenthesized_expression "((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2)" ( (binary_expression "*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2" (pointer_expression "*(byte *)(*(long *)(puVar9 + 4) + 0x20)" * (cast_expression "(byte *)(*(long *)(puVar9 + 4) + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(puVar9 + 4) + 0x20)" ( (binary_expression "*(long *)(puVar9 + 4) + 0x20" (pointer_expression "*(long *)(puVar9 + 4)" * (cast_expression "(long *)(puVar9 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_001ed720();\n        }" { comment (expression_statement "FUN_001ed720();" (call_expression "FUN_001ed720()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(puVar9 + 4) + 0x10)" * (cast_expression "(long *)(*(long *)(puVar9 + 4) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(puVar9 + 4) + 0x10)" ( (binary_expression "*(long *)(puVar9 + 4) + 0x10" (pointer_expression "*(long *)(puVar9 + 4)" * (cast_expression "(long *)(puVar9 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }" else (compound_statement "{\n        lVar3 = *(long *)(puVar9 + 2);\n      }" { (expression_statement "lVar3 = *(long *)(puVar9 + 2);" (assignment_expression "lVar3 = *(long *)(puVar9 + 2)" identifier = (pointer_expression "*(long *)(puVar9 + 2)" * (cast_expression "(long *)(puVar9 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar10 = uVar10 + lVar3;" (assignment_expression "uVar10 = uVar10 + lVar3" identifier = (binary_expression "uVar10 + lVar3" identifier + identifier)) ;) (expression_statement "puVar9 = puVar9 + 8;" (assignment_expression "puVar9 = puVar9 + 8" identifier = (binary_expression "puVar9 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)(param_1 + 0x90) != puVar9)" ( (binary_expression "*(uint **)(param_1 + 0x90) != puVar9" (pointer_expression "*(uint **)(param_1 + 0x90)" * (cast_expression "(uint **)(param_1 + 0x90)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) != identifier) )) ;) })) (expression_statement "plVar8 = *(long **)(param_1 + 0x130);" (assignment_expression "plVar8 = *(long **)(param_1 + 0x130)" identifier = (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (if_statement "if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }" if (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }" { (expression_statement "plVar7 = *(long **)(param_1 + 0xf8);" (assignment_expression "plVar7 = *(long **)(param_1 + 0xf8)" identifier = (pointer_expression "*(long **)(param_1 + 0xf8)" * (cast_expression "(long **)(param_1 + 0xf8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) ))))) ;) (if_statement "if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }" if (parenthesized_expression "(plVar7 != (long *)(param_1 + 0xf8))" ( (binary_expression "plVar7 != (long *)(param_1 + 0xf8)" identifier != (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) )) (compound_statement "{\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }" { (expression_statement "lVar3 = plVar7[2];" (assignment_expression "lVar3 = plVar7[2]" identifier = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "lVar5 = plVar7[3] - lVar3;" (assignment_expression "lVar5 = plVar7[3] - lVar3" identifier = (binary_expression "plVar7[3] - lVar3" (subscript_expression "plVar7[3]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" identifier = (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }" while (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }" { (expression_statement "(**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);" (call_expression "(**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5)" (parenthesized_expression "(**(code **)(*plVar8 + 0x18))" ( (pointer_expression "**(code **)(*plVar8 + 0x18)" * (pointer_expression "*(code **)(*plVar8 + 0x18)" * (cast_expression "(code **)(*plVar8 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar8 + 0x18)" ( (binary_expression "*plVar8 + 0x18" (pointer_expression "*plVar8" * identifier) + number_literal) ))))) )) (argument_list "(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5)" ( identifier , identifier , (binary_expression "lVar3 + *(long *)(param_1 + 0x18)" identifier + (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) , identifier ))) ;) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;" if (parenthesized_expression "(plVar7 == (long *)(param_1 + 0xf8))" ( (binary_expression "plVar7 == (long *)(param_1 + 0xf8)" identifier == (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) )) (goto_statement "goto LAB_001ee0f4;" goto statement_identifier ;)) (expression_statement "lVar3 = plVar7[2];" (assignment_expression "lVar3 = plVar7[2]" identifier = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "plVar8 = *(long **)(param_1 + 0x130);" (assignment_expression "plVar8 = *(long **)(param_1 + 0x130)" identifier = (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = plVar7[3] - lVar3;" (assignment_expression "lVar5 = plVar7[3] - lVar3" identifier = (binary_expression "plVar7[3] - lVar3" (subscript_expression "plVar7[3]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" identifier = (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_00199900("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (labeled_statement "LAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" statement_identifier : (if_statement "if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" if (parenthesized_expression "(0 < *(long *)(param_1 + 0x138))" ( (binary_expression "0 < *(long *)(param_1 + 0x138)" number_literal < (pointer_expression "*(long *)(param_1 + 0x138)" * (cast_expression "(long *)(param_1 + 0x138)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) ))))) )) (compound_statement "{\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" { (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (expression_statement "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));" (call_expression "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18))" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x130) + 0x18)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x130) + 0x18)" * (cast_expression "(code **)(**(long **)(param_1 + 0x130) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x130) + 0x18)" ( (binary_expression "**(long **)(param_1 + 0x130) + 0x18" (pointer_expression "**(long **)(param_1 + 0x130)" * (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18))" ( (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) , identifier , (binary_expression "(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18)" (parenthesized_expression "(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138))" ( (binary_expression "*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x138)" * (cast_expression "(long *)(param_1 + 0x138)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) ))))) )) + (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ))) ;) }))) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void do_write(Output_section * this, Output_file * of) */\n\nvoid __thiscall gold::Output_section::do_write(Output_section *this,Output_file *of)\n\n{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Output_fill *pOVar3;\n  _List_node_base *p_Var4;\n  int iVar5;\n  uint64_t uVar6;\n  undefined4 extraout_var;\n  ulong uVar7;\n  long lVar8;\n  uint uVar9;\n  Target *pTVar10;\n  Relobj *this_00;\n  size_type sVar11;\n  pointer pFVar12;\n  long lVar13;\n  pointer pIVar14;\n  ulong uVar15;\n  string fill_data;\n  \n  if ((this->field_0xc8 & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((this->field_0xca & 1) == 0) {\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n    lVar13 = (this->super_Output_data).offset_;\n    pFVar12 = (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_start;\n    if (pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;\n  }\n  pIVar14 = (this->input_sections_).\n            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;\n  uVar15 = this->first_input_offset_ + lVar13;\n  if (pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n      ._M_impl._M_finish) {\n    do {\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14);\n  }\n  pOVar3 = this->free_space_fill_;\n  if (pOVar3 != (Output_fill *)0x0) {\n    p_Var4 = (this->free_list_).list_.\n             super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;\n    if ((Free_list *)p_Var4 != &this->free_list_) {\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }\n  }\n  return;\n}\n\n" comment comment comment comment (function_definition "void __thiscall gold::Output_section::do_write(Output_section *this,Output_file *of)\n\n{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Output_fill *pOVar3;\n  _List_node_base *p_Var4;\n  int iVar5;\n  uint64_t uVar6;\n  undefined4 extraout_var;\n  ulong uVar7;\n  long lVar8;\n  uint uVar9;\n  Target *pTVar10;\n  Relobj *this_00;\n  size_type sVar11;\n  pointer pFVar12;\n  long lVar13;\n  pointer pIVar14;\n  ulong uVar15;\n  string fill_data;\n  \n  if ((this->field_0xc8 & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((this->field_0xca & 1) == 0) {\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n    lVar13 = (this->super_Output_data).offset_;\n    pFVar12 = (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_start;\n    if (pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;\n  }\n  pIVar14 = (this->input_sections_).\n            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;\n  uVar15 = this->first_input_offset_ + lVar13;\n  if (pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n      ._M_impl._M_finish) {\n    do {\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14);\n  }\n  pOVar3 = this->free_space_fill_;\n  if (pOVar3 != (Output_fill *)0x0) {\n    p_Var4 = (this->free_list_).list_.\n             super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;\n    if ((Free_list *)p_Var4 != &this->free_list_) {\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "do_write(Output_section *this,Output_file *of)" identifier (parameter_list "(Output_section *this,Output_file *of)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Output_fill *pOVar3;\n  _List_node_base *p_Var4;\n  int iVar5;\n  uint64_t uVar6;\n  undefined4 extraout_var;\n  ulong uVar7;\n  long lVar8;\n  uint uVar9;\n  Target *pTVar10;\n  Relobj *this_00;\n  size_type sVar11;\n  pointer pFVar12;\n  long lVar13;\n  pointer pIVar14;\n  ulong uVar15;\n  string fill_data;\n  \n  if ((this->field_0xc8 & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((this->field_0xca & 1) == 0) {\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n    lVar13 = (this->super_Output_data).offset_;\n    pFVar12 = (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_start;\n    if (pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;\n  }\n  pIVar14 = (this->input_sections_).\n            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;\n  uVar15 = this->first_input_offset_ + lVar13;\n  if (pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n      ._M_impl._M_finish) {\n    do {\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14);\n  }\n  pOVar3 = this->free_space_fill_;\n  if (pOVar3 != (Output_fill *)0x0) {\n    p_Var4 = (this->free_list_).list_.\n             super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;\n    if ((Free_list *)p_Var4 != &this->free_list_) {\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "Output_fill *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "_List_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint64_t uVar6;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "Target *pTVar10;" type_identifier (pointer_declarator "*pTVar10" * identifier) ;) (declaration "Relobj *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "size_type sVar11;" type_identifier identifier ;) (declaration "pointer pFVar12;" type_identifier identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "pointer pIVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "string fill_data;" type_identifier identifier ;) (if_statement "if ((this->field_0xc8 & 0x20) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");\n  }" if (parenthesized_expression "((this->field_0xc8 & 0x20) != 0)" ( (binary_expression "(this->field_0xc8 & 0x20) != 0" (parenthesized_expression "(this->field_0xc8 & 0x20)" ( (binary_expression "this->field_0xc8 & 0x20" (field_expression "this->field_0xc8" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0xe99,"do_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0xe99,"do_write")" identifier (argument_list "("../../gold/output.cc",0xe99,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (if_statement "if ((this->field_0xca & 1) == 0) {\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n    lVar13 = (this->super_Output_data).offset_;\n    pFVar12 = (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_start;\n    if (pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;\n  }" if (parenthesized_expression "((this->field_0xca & 1) == 0)" ( (binary_expression "(this->field_0xca & 1) == 0" (parenthesized_expression "(this->field_0xca & 1)" ( (binary_expression "this->field_0xca & 1" (field_expression "this->field_0xca" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n    lVar13 = (this->super_Output_data).offset_;\n    pFVar12 = (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_start;\n    if (pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n  }" { (if_statement "if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "(((this->super_Output_data).field_0x20 & 4) == 0)" ( (binary_expression "((this->super_Output_data).field_0x20 & 4) == 0" (parenthesized_expression "((this->super_Output_data).field_0x20 & 4)" ( (binary_expression "(this->super_Output_data).field_0x20 & 4" (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (expression_statement "lVar13 = (this->super_Output_data).offset_;" (assignment_expression "lVar13 = (this->super_Output_data).offset_" identifier = (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (ERROR "pFVar12 = (this->fills_).\n              super__Vector_base<gold::" (assignment_expression "pFVar12 = (this->fills_).\n              super__Vector_base<gold" identifier = (binary_expression "(this->fills_).\n              super__Vector_base<gold" (field_expression "(this->fills_).\n              super__Vector_base" (parenthesized_expression "(this->fills_)" ( (field_expression "this->fills_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_start;" statement_identifier (ERROR "::Fill,_std::allocator<gold:" : : (comma_expression "Fill,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Fill>_>\n              ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Fill>_>\n              ._M_impl._M_start;" (field_expression "Fill>_>\n              ._M_impl._M_start" (field_expression "Fill>_>\n              ._M_impl" (binary_expression "Fill>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish)" ( (ERROR "pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::" (comma_expression "pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std" (binary_expression "pFVar12 !=\n        (this->fills_).\n        super__Vector_base<gold" identifier != (binary_expression "(this->fills_).\n        super__Vector_base<gold" (field_expression "(this->fills_).\n        super__Vector_base" (parenthesized_expression "(this->fills_)" ( (field_expression "this->fills_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section::Fill" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Fill>_>.\n        _M_impl._M_finish" (field_expression "Fill>_>.\n        _M_impl" (binary_expression "Fill>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n      pTVar10 = parameters->target_;\n      if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }\nLAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" { (expression_statement "pTVar10 = parameters->target_;" (assignment_expression "pTVar10 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar10 != (Target *)0x0) {\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }" if (parenthesized_expression "(pTVar10 != (Target *)0x0)" ( (binary_expression "pTVar10 != (Target *)0x0" identifier != (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);\n      }" { (do_statement "do {\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        } while (pTVar10 != (Target *)0x0);" do (compound_statement "{\n          (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);\n          memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }\n          pFVar12 = pFVar12 + 1;\n          if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          pTVar10 = parameters->target_;\n        }" { (expression_statement "(*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_);" (call_expression "(*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,pFVar12->length_)" (parenthesized_expression "(*pTVar10->_vptr_Target[6])" ( (pointer_expression "*pTVar10->_vptr_Target[6]" * (subscript_expression "pTVar10->_vptr_Target[6]" (field_expression "pTVar10->_vptr_Target" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(&fill_data,pTVar10,pFVar12->length_)" ( (pointer_expression "&fill_data" & identifier) , identifier , (field_expression "pFVar12->length_" identifier -> field_identifier) ))) ;) (expression_statement "memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length);" (call_expression "memcpy(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length)" identifier (argument_list "(of->base_ + pFVar12->section_offset_ + lVar13,fill_data._M_dataplus._M_p,\n                 fill_data._M_string_length)" ( (binary_expression "of->base_ + pFVar12->section_offset_ + lVar13" (binary_expression "of->base_ + pFVar12->section_offset_" (field_expression "of->base_" identifier -> field_identifier) + (field_expression "pFVar12->section_offset_" identifier -> field_identifier)) + identifier) , (field_expression "fill_data._M_dataplus._M_p" (field_expression "fill_data._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "fill_data._M_string_length" identifier . field_identifier) ))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n            operator_delete(fill_data._M_dataplus._M_p);\n          }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p != &fill_data.field_2" (binary_expression "allocator<char>_>_9\n               *)fill_data._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)fill_data._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "fill_data._M_dataplus._M_p" (field_expression "fill_data._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&fill_data.field_2" & (field_expression "fill_data.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n            operator_delete(fill_data._M_dataplus._M_p);\n          }" { (expression_statement "operator_delete(fill_data._M_dataplus._M_p);" (call_expression "operator_delete(fill_data._M_dataplus._M_p)" identifier (argument_list "(fill_data._M_dataplus._M_p)" ( (field_expression "fill_data._M_dataplus._M_p" (field_expression "fill_data._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (expression_statement "pFVar12 = pFVar12 + 1;" (assignment_expression "pFVar12 = pFVar12 + 1" identifier = (binary_expression "pFVar12 + 1" identifier + number_literal)) ;) (if_statement "if (pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish) {\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" if (parenthesized_expression "(pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>\n              ._M_impl._M_finish)" ( (ERROR "pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::" (comma_expression "pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold::Output_section::Fill,_std" (binary_expression "pFVar12 ==\n              (this->fills_).\n              super__Vector_base<gold" identifier == (binary_expression "(this->fills_).\n              super__Vector_base<gold" (field_expression "(this->fills_).\n              super__Vector_base" (parenthesized_expression "(this->fills_)" ( (field_expression "this->fills_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section::Fill" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Fill>_>\n              ._M_impl._M_finish" (field_expression "Fill>_>\n              ._M_impl" (binary_expression "Fill>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" { (if_statement "if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;" if (parenthesized_expression "(((this->super_Output_data).field_0x20 & 4) != 0)" ( (binary_expression "((this->super_Output_data).field_0x20 & 4) != 0" (parenthesized_expression "((this->super_Output_data).field_0x20 & 4)" ( (binary_expression "(this->super_Output_data).field_0x20 & 4" (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001eded2;" goto statement_identifier ;)) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;) })) (expression_statement "pTVar10 = parameters->target_;" (assignment_expression "pTVar10 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pTVar10 != (Target *)0x0)" ( (binary_expression "pTVar10 != (Target *)0x0" identifier != (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_001ee134:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) }) (else_clause "else {\n    if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;\n  }" else (compound_statement "{\n    if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;\n  }" { (if_statement "if ((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }" if (parenthesized_expression "((this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_finish)" ( (ERROR "(this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std::allocator<gold::Output_section::" (comma_expression "(this->fills_).\n        super__Vector_base<gold::Output_section::Fill,_std" (binary_expression "(this->fills_).\n        super__Vector_base<gold" (field_expression "(this->fills_).\n        super__Vector_base" (parenthesized_expression "(this->fills_)" ( (field_expression "this->fills_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section::Fill" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : : (binary_expression "Fill>_>.\n        _M_impl._M_start !=\n        (this->fills_).\n        super__Vector_base<gold" (field_expression "Fill>_>.\n        _M_impl._M_start" (field_expression "Fill>_>.\n        _M_impl" (binary_expression "Fill>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != (binary_expression "(this->fills_).\n        super__Vector_base<gold" (field_expression "(this->fills_).\n        super__Vector_base" (parenthesized_expression "(this->fills_)" ( (field_expression "this->fills_" identifier -> field_identifier) )) . field_identifier) < identifier)) : : identifier : : (comma_expression "Fill,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Fill>_>.\n        _M_impl._M_finish" (field_expression "Fill>_>.\n        _M_impl" (binary_expression "Fill>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0xe9c,"do_write")" identifier (argument_list "("../../gold/output.cc",0xe9c,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (if_statement "if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "(((this->super_Output_data).field_0x20 & 4) == 0)" ( (binary_expression "((this->super_Output_data).field_0x20 & 4) == 0" (parenthesized_expression "((this->super_Output_data).field_0x20 & 4)" ( (binary_expression "(this->super_Output_data).field_0x20 & 4" (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (labeled_statement "LAB_001eded2:\n    lVar13 = (this->super_Output_data).offset_;" statement_identifier : (expression_statement "lVar13 = (this->super_Output_data).offset_;" (assignment_expression "lVar13 = (this->super_Output_data).offset_" identifier = (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;)) }))) (ERROR "pIVar14 = (this->input_sections_).\n            super__Vector_base<gold::" (assignment_expression "pIVar14 = (this->input_sections_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->input_sections_).\n            super__Vector_base<gold" (field_expression "(this->input_sections_).\n            super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;" statement_identifier (ERROR "::Input_section,_std::allocator<gold:" : : (comma_expression "Input_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section>_>\n            ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Input_section>_>\n            ._M_impl._M_start;" (field_expression "Input_section>_>\n            ._M_impl._M_start" (field_expression "Input_section>_>\n            ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "uVar15 = this->first_input_offset_ + lVar13;" (assignment_expression "uVar15 = this->first_input_offset_ + lVar13" identifier = (binary_expression "this->first_input_offset_ + lVar13" (field_expression "this->first_input_offset_" identifier -> field_identifier) + identifier)) ;) (if_statement "if (pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n      ._M_impl._M_finish) {\n    do {\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14);\n  }" if (parenthesized_expression "(pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n      ._M_impl._M_finish)" ( (ERROR "pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::" (comma_expression "pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std" (binary_expression "pIVar14 !=\n      (this->input_sections_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->input_sections_).\n      super__Vector_base<gold" (field_expression "(this->input_sections_).\n      super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section::Input_section" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Input_section>_>\n      ._M_impl._M_finish" (field_expression "Input_section>_>\n      ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14);\n  }" { (do_statement "do {\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14);" do (compound_statement "{\n      if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }\n      if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }\n      uVar15 = uVar15 + sVar11;\n      pIVar14 = pIVar14 + 1;\n    }" { (if_statement "if (pIVar14->p2align_ == 0) {\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }" if (parenthesized_expression "(pIVar14->p2align_ == 0)" ( (binary_expression "pIVar14->p2align_ == 0" (field_expression "pIVar14->p2align_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        uVar9 = pIVar14->shndx_;\n        if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }\n      }" { (expression_statement "uVar9 = pIVar14->shndx_;" (assignment_expression "uVar9 = pIVar14->shndx_" identifier = (field_expression "pIVar14->shndx_" identifier -> field_identifier)) ;) (if_statement "if (0xfffffffb < uVar9) {\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }" if (parenthesized_expression "(0xfffffffb < uVar9)" ( (binary_expression "0xfffffffb < uVar9" number_literal < identifier) )) (compound_statement "{\n          p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];\n          if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }\n          goto LAB_001edf5a;\n        }" { (expression_statement "p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3];" (assignment_expression "p_Var2 = (((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3]" identifier = (subscript_expression "(((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data[3]" (field_expression "(((pIVar14->u2_).posd)->super_Output_data)._vptr_Output_data" (parenthesized_expression "(((pIVar14->u2_).posd)->super_Output_data)" ( (field_expression "((pIVar14->u2_).posd)->super_Output_data" (parenthesized_expression "((pIVar14->u2_).posd)" ( (field_expression "(pIVar14->u2_).posd" (parenthesized_expression "(pIVar14->u2_)" ( (field_expression "pIVar14->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }\n          else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n            uVar6 = ((pIVar14->u2_).posd)->addralign_;\n          }" { (expression_statement "uVar6 = ((pIVar14->u2_).posd)->addralign_;" (assignment_expression "uVar6 = ((pIVar14->u2_).posd)->addralign_" identifier = (field_expression "((pIVar14->u2_).posd)->addralign_" (parenthesized_expression "((pIVar14->u2_).posd)" ( (field_expression "(pIVar14->u2_).posd" (parenthesized_expression "(pIVar14->u2_)" ( (field_expression "pIVar14->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) }) (else_clause "else {\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }" else (compound_statement "{\n            iVar5 = (*p_Var2)();\n            uVar6 = CONCAT44(extraout_var,iVar5);\n          }" { (expression_statement "iVar5 = (*p_Var2)();" (assignment_expression "iVar5 = (*p_Var2)()" identifier = (call_expression "(*p_Var2)()" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar6 = CONCAT44(extraout_var,iVar5);" (assignment_expression "uVar6 = CONCAT44(extraout_var,iVar5)" identifier = (call_expression "CONCAT44(extraout_var,iVar5)" identifier (argument_list "(extraout_var,iVar5)" ( identifier , identifier )))) ;) }))) (goto_statement "goto LAB_001edf5a;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }" else (compound_statement "{\n        uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);\nLAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }\n      }" { (expression_statement "uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f);" (assignment_expression "uVar6 = 1L << ((char)pIVar14->p2align_ - 1U & 0x3f)" identifier = (binary_expression "1L << ((char)pIVar14->p2align_ - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)pIVar14->p2align_ - 1U & 0x3f)" ( (binary_expression "(char)pIVar14->p2align_ - 1U & 0x3f" (binary_expression "(char)pIVar14->p2align_ - 1U" (cast_expression "(char)pIVar14->p2align_" ( (type_descriptor "char" primitive_type) ) (field_expression "pIVar14->p2align_" identifier -> field_identifier)) - number_literal) & number_literal) )))) ;) (labeled_statement "LAB_001edf5a:\n        if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }" statement_identifier : (if_statement "if (uVar6 == 0) {\n          uVar9 = pIVar14->shndx_;\n        }\n        else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar9 = pIVar14->shndx_;\n        }" { (expression_statement "uVar9 = pIVar14->shndx_;" (assignment_expression "uVar9 = pIVar14->shndx_" identifier = (field_expression "pIVar14->shndx_" identifier -> field_identifier)) ;) }) (else_clause "else {\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }" else (compound_statement "{\n          uVar7 = (uVar15 - 1) + uVar6 & -uVar6;\n          if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }\n          uVar9 = pIVar14->shndx_;\n          uVar15 = uVar7;\n        }" { (expression_statement "uVar7 = (uVar15 - 1) + uVar6 & -uVar6;" (assignment_expression "uVar7 = (uVar15 - 1) + uVar6 & -uVar6" identifier = (binary_expression "(uVar15 - 1) + uVar6 & -uVar6" (binary_expression "(uVar15 - 1) + uVar6" (parenthesized_expression "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-uVar6" - identifier))) ;) (if_statement "if (((this->field_0xca & 1) != 0) && (uVar15 != uVar7)) {\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }" if (parenthesized_expression "(((this->field_0xca & 1) != 0) && (uVar15 != uVar7))" ( (binary_expression "((this->field_0xca & 1) != 0) && (uVar15 != uVar7)" (parenthesized_expression "((this->field_0xca & 1) != 0)" ( (binary_expression "(this->field_0xca & 1) != 0" (parenthesized_expression "(this->field_0xca & 1)" ( (binary_expression "this->field_0xca & 1" (field_expression "this->field_0xca" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(uVar15 != uVar7)" ( (binary_expression "uVar15 != uVar7" identifier != identifier) ))) )) (compound_statement "{\n            pTVar10 = parameters->target_;\n            if (pTVar10 == (Target *)0x0) goto LAB_001ee134;\n            (*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);\n            memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }\n          }" { (expression_statement "pTVar10 = parameters->target_;" (assignment_expression "pTVar10 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar10 == (Target *)0x0) goto LAB_001ee134;" if (parenthesized_expression "(pTVar10 == (Target *)0x0)" ( (binary_expression "pTVar10 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001ee134;" goto statement_identifier ;)) (expression_statement "(*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15);" (call_expression "(*pTVar10->_vptr_Target[6])(&fill_data,pTVar10,uVar7 - uVar15)" (parenthesized_expression "(*pTVar10->_vptr_Target[6])" ( (pointer_expression "*pTVar10->_vptr_Target[6]" * (subscript_expression "pTVar10->_vptr_Target[6]" (field_expression "pTVar10->_vptr_Target" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(&fill_data,pTVar10,uVar7 - uVar15)" ( (pointer_expression "&fill_data" & identifier) , identifier , (binary_expression "uVar7 - uVar15" identifier - identifier) ))) ;) (expression_statement "memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length);" (call_expression "memcpy(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length)" identifier (argument_list "(of->base_ + uVar15,fill_data._M_dataplus._M_p,fill_data._M_string_length)" ( (binary_expression "of->base_ + uVar15" (field_expression "of->base_" identifier -> field_identifier) + identifier) , (field_expression "fill_data._M_dataplus._M_p" (field_expression "fill_data._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "fill_data._M_string_length" identifier . field_identifier) ))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {\n              operator_delete(fill_data._M_dataplus._M_p);\n            }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p != &fill_data.field_2" (binary_expression "allocator<char>_>_9\n                 *)fill_data._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                 *)fill_data._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "fill_data._M_dataplus._M_p" (field_expression "fill_data._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&fill_data.field_2" & (field_expression "fill_data.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n              operator_delete(fill_data._M_dataplus._M_p);\n            }" { (expression_statement "operator_delete(fill_data._M_dataplus._M_p);" (call_expression "operator_delete(fill_data._M_dataplus._M_p)" identifier (argument_list "(fill_data._M_dataplus._M_p)" ( (field_expression "fill_data._M_dataplus._M_p" (field_expression "fill_data._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) })) (expression_statement "uVar9 = pIVar14->shndx_;" (assignment_expression "uVar9 = pIVar14->shndx_" identifier = (field_expression "pIVar14->shndx_" identifier -> field_identifier)) ;) (expression_statement "uVar15 = uVar7;" (assignment_expression "uVar15 = uVar7" identifier = identifier) ;) })))) }))) (if_statement "if (uVar9 + 4 < 4) {\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }\n      else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }" if (parenthesized_expression "(uVar9 + 4 < 4)" ( (binary_expression "uVar9 + 4 < 4" (binary_expression "uVar9 + 4" identifier + number_literal) < number_literal) )) (compound_statement "{\n        this_00 = (pIVar14->u2_).object;\n        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);\n        if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;\n        if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }\n        sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;\n      }" { (expression_statement "this_00 = (pIVar14->u2_).object;" (assignment_expression "this_00 = (pIVar14->u2_).object" identifier = (field_expression "(pIVar14->u2_).object" (parenthesized_expression "(pIVar14->u2_)" ( (field_expression "pIVar14->u2_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(*(this_00->super_Object)._vptr_Object[2])(this_00,of);" (call_expression "(*(this_00->super_Object)._vptr_Object[2])(this_00,of)" (parenthesized_expression "(*(this_00->super_Object)._vptr_Object[2])" ( (pointer_expression "*(this_00->super_Object)._vptr_Object[2]" * (subscript_expression "(this_00->super_Object)._vptr_Object[2]" (field_expression "(this_00->super_Object)._vptr_Object" (parenthesized_expression "(this_00->super_Object)" ( (field_expression "this_00->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this_00,of)" ( identifier , identifier ))) ;) (if_statement "if (pIVar14->shndx_ < 0xfffffffc) goto LAB_001edf10;" if (parenthesized_expression "(pIVar14->shndx_ < 0xfffffffc)" ( (binary_expression "pIVar14->shndx_ < 0xfffffffc" (field_expression "pIVar14->shndx_" identifier -> field_identifier) < number_literal) )) (goto_statement "goto LAB_001edf10;" goto statement_identifier ;)) (if_statement "if (((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }" if (parenthesized_expression "(((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0)" ( (binary_expression "((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0" (parenthesized_expression "((((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U)" ( (binary_expression "(((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U" (subscript_expression "(((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf[8]" (field_expression "(((pIVar14->u2_).object)->super_Object).name_.field_2._M_local_buf" (field_expression "(((pIVar14->u2_).object)->super_Object).name_.field_2" (field_expression "(((pIVar14->u2_).object)->super_Object).name_" (parenthesized_expression "(((pIVar14->u2_).object)->super_Object)" ( (field_expression "((pIVar14->u2_).object)->super_Object" (parenthesized_expression "((pIVar14->u2_).object)" ( (field_expression "(pIVar14->u2_).object" (parenthesized_expression "(pIVar14->u2_)" ( (field_expression "pIVar14->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          Input_section::data_size((Input_section *)this_00);\n        }" { comment (labeled_statement "Input_section::data_size((Input_section *)this_00);" statement_identifier : (ERROR ":" :) (expression_statement "data_size((Input_section *)this_00);" (call_expression "data_size((Input_section *)this_00)" identifier (argument_list "((Input_section *)this_00)" ( (cast_expression "(Input_section *)this_00" ( (type_descriptor "Input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (expression_statement "sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length;" (assignment_expression "sVar11 = (((pIVar14->u2_).object)->super_Object).name_._M_string_length" identifier = (field_expression "(((pIVar14->u2_).object)->super_Object).name_._M_string_length" (field_expression "(((pIVar14->u2_).object)->super_Object).name_" (parenthesized_expression "(((pIVar14->u2_).object)->super_Object)" ( (field_expression "((pIVar14->u2_).object)->super_Object" (parenthesized_expression "((pIVar14->u2_).object)" ( (field_expression "(pIVar14->u2_).object" (parenthesized_expression "(pIVar14->u2_)" ( (field_expression "pIVar14->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }" else (compound_statement "{\nLAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;\n      }" { (labeled_statement "LAB_001edf10:\n        sVar11 = (pIVar14->u1_).data_size;" statement_identifier : (expression_statement "sVar11 = (pIVar14->u1_).data_size;" (assignment_expression "sVar11 = (pIVar14->u1_).data_size" identifier = (field_expression "(pIVar14->u1_).data_size" (parenthesized_expression "(pIVar14->u1_)" ( (field_expression "pIVar14->u1_" identifier -> field_identifier) )) . field_identifier)) ;)) }))) (expression_statement "uVar15 = uVar15 + sVar11;" (assignment_expression "uVar15 = uVar15 + sVar11" identifier = (binary_expression "uVar15 + sVar11" identifier + identifier)) ;) (expression_statement "pIVar14 = pIVar14 + 1;" (assignment_expression "pIVar14 = pIVar14 + 1" identifier = (binary_expression "pIVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != pIVar14)" ( (ERROR "(this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::" (comma_expression "(this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std" (binary_expression "(this->input_sections_).\n             super__Vector_base<gold" (field_expression "(this->input_sections_).\n             super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section::Input_section" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section>_>\n             ._M_impl._M_finish != pIVar14" (field_expression "Input_section>_>\n             ._M_impl._M_finish" (field_expression "Input_section>_>\n             ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (expression_statement "pOVar3 = this->free_space_fill_;" (assignment_expression "pOVar3 = this->free_space_fill_" identifier = (field_expression "this->free_space_fill_" identifier -> field_identifier)) ;) (if_statement "if (pOVar3 != (Output_fill *)0x0) {\n    p_Var4 = (this->free_list_).list_.\n             super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;\n    if ((Free_list *)p_Var4 != &this->free_list_) {\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }\n  }" if (parenthesized_expression "(pOVar3 != (Output_fill *)0x0)" ( (binary_expression "pOVar3 != (Output_fill *)0x0" identifier != (cast_expression "(Output_fill *)0x0" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var4 = (this->free_list_).list_.\n             super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;\n    if ((Free_list *)p_Var4 != &this->free_list_) {\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }\n  }" { (ERROR "p_Var4 = (this->free_list_).list_.\n             super__List_base<gold::" (assignment_expression "p_Var4 = (this->free_list_).list_.\n             super__List_base<gold" identifier = (binary_expression "(this->free_list_).list_.\n             super__List_base<gold" (field_expression "(this->free_list_).list_.\n             super__List_base" (field_expression "(this->free_list_).list_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next;" (field_expression "Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base._M_next" (field_expression "Free_list_node>_>\n             ._M_impl._M_node.super__List_node_base" (field_expression "Free_list_node>_>\n             ._M_impl._M_node" (field_expression "Free_list_node>_>\n             ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;))) (if_statement "if ((Free_list *)p_Var4 != &this->free_list_) {\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }" if (parenthesized_expression "((Free_list *)p_Var4 != &this->free_list_)" ( (binary_expression "(Free_list *)p_Var4 != &this->free_list_" (cast_expression "(Free_list *)p_Var4" ( (type_descriptor "Free_list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier))) )) (compound_statement "{\n      lVar13 = (long)p_Var4[1]._M_next;\n      lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n      bVar1 = (this->super_Output_data).field_0x20;\n      while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }\nLAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n    }" { (expression_statement "lVar13 = (long)p_Var4[1]._M_next;" (assignment_expression "lVar13 = (long)p_Var4[1]._M_next" identifier = (cast_expression "(long)p_Var4[1]._M_next" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "p_Var4[1]._M_next" (subscript_expression "p_Var4[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "lVar8 = (long)p_Var4[1]._M_prev - lVar13;" (assignment_expression "lVar8 = (long)p_Var4[1]._M_prev - lVar13" identifier = (binary_expression "(long)p_Var4[1]._M_prev - lVar13" (cast_expression "(long)p_Var4[1]._M_prev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "p_Var4[1]._M_prev" (subscript_expression "p_Var4[1]" identifier [ number_literal ]) . field_identifier)) - identifier)) ;) (expression_statement "bVar1 = (this->super_Output_data).field_0x20;" (assignment_expression "bVar1 = (this->super_Output_data).field_0x20" identifier = (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (while_statement "while ((bVar1 & 4) != 0) {\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }" while (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        (*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);\n        p_Var4 = p_Var4->_M_next;\n        if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;\n        lVar13 = (long)p_Var4[1]._M_next;\n        pOVar3 = this->free_space_fill_;\n        lVar8 = (long)p_Var4[1]._M_prev - lVar13;\n        bVar1 = (this->super_Output_data).field_0x20;\n      }" { (expression_statement "(*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8);" (call_expression "(*pOVar3->_vptr_Output_fill[3])(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8)" (parenthesized_expression "(*pOVar3->_vptr_Output_fill[3])" ( (pointer_expression "*pOVar3->_vptr_Output_fill[3]" * (subscript_expression "pOVar3->_vptr_Output_fill[3]" (field_expression "pOVar3->_vptr_Output_fill" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar3,of,lVar13 + (this->super_Output_data).offset_,lVar8)" ( identifier , identifier , (binary_expression "lVar13 + (this->super_Output_data).offset_" identifier + (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) , identifier ))) ;) (expression_statement "p_Var4 = p_Var4->_M_next;" (assignment_expression "p_Var4 = p_Var4->_M_next" identifier = (field_expression "p_Var4->_M_next" identifier -> field_identifier)) ;) (if_statement "if ((Free_list *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;" if (parenthesized_expression "((Free_list *)p_Var4 == &this->free_list_)" ( (binary_expression "(Free_list *)p_Var4 == &this->free_list_" (cast_expression "(Free_list *)p_Var4" ( (type_descriptor "Free_list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier))) )) (goto_statement "goto LAB_001ee0f4;" goto statement_identifier ;)) (expression_statement "lVar13 = (long)p_Var4[1]._M_next;" (assignment_expression "lVar13 = (long)p_Var4[1]._M_next" identifier = (cast_expression "(long)p_Var4[1]._M_next" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "p_Var4[1]._M_next" (subscript_expression "p_Var4[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "pOVar3 = this->free_space_fill_;" (assignment_expression "pOVar3 = this->free_space_fill_" identifier = (field_expression "this->free_space_fill_" identifier -> field_identifier)) ;) (expression_statement "lVar8 = (long)p_Var4[1]._M_prev - lVar13;" (assignment_expression "lVar8 = (long)p_Var4[1]._M_prev - lVar13" identifier = (binary_expression "(long)p_Var4[1]._M_prev - lVar13" (cast_expression "(long)p_Var4[1]._M_prev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "p_Var4[1]._M_prev" (subscript_expression "p_Var4[1]" identifier [ number_literal ]) . field_identifier)) - identifier)) ;) (expression_statement "bVar1 = (this->super_Output_data).field_0x20;" (assignment_expression "bVar1 = (this->super_Output_data).field_0x20" identifier = (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) })) (labeled_statement "LAB_001ee02e:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (labeled_statement "LAB_001ee0f4:\n    if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }" statement_identifier : (if_statement "if (0 < this->patch_space_) {\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }" if (parenthesized_expression "(0 < this->patch_space_)" ( (binary_expression "0 < this->patch_space_" number_literal < (field_expression "this->patch_space_" identifier -> field_identifier)) )) (compound_statement "{\n      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;\n      (*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);\n    }" { (if_statement "if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "(((this->super_Output_data).field_0x20 & 4) == 0)" ( (binary_expression "((this->super_Output_data).field_0x20 & 4) == 0" (parenthesized_expression "((this->super_Output_data).field_0x20 & 4)" ( (binary_expression "(this->super_Output_data).field_0x20 & 4" (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (expression_statement "(*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_);" (call_expression "(*this->free_space_fill_->_vptr_Output_fill[3])\n                (this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_)" (parenthesized_expression "(*this->free_space_fill_->_vptr_Output_fill[3])" ( (pointer_expression "*this->free_space_fill_->_vptr_Output_fill[3]" * (subscript_expression "this->free_space_fill_->_vptr_Output_fill[3]" (field_expression "this->free_space_fill_->_vptr_Output_fill" (field_expression "this->free_space_fill_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "(this->free_space_fill_,of,\n                 ((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_)" ( (field_expression "this->free_space_fill_" identifier -> field_identifier) , identifier , (binary_expression "((this->super_Output_data).data_size_ - this->patch_space_) +\n                 (this->super_Output_data).offset_" (parenthesized_expression "((this->super_Output_data).data_size_ - this->patch_space_)" ( (binary_expression "(this->super_Output_data).data_size_ - this->patch_space_" (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) - (field_expression "this->patch_space_" identifier -> field_identifier)) )) + (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ))) ;) }))) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001ede00(long param_1,long param_2)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001ede00(long param_1,long param_2)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001ede00(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (if_statement "if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 200) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_1 + 200) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_1 + 200) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 200) & 0x20" (pointer_expression "*(byte *)(param_1 + 200)" * (cast_expression "(byte *)(param_1 + 200)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }" { (expression_statement "FUN_00199900("../../gold/output.cc",0xe99,"do_write");" (call_expression "FUN_00199900("../../gold/output.cc",0xe99,"do_write")" identifier (argument_list "("../../gold/output.cc",0xe99,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xca) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0xca) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xca) & 1)" ( (binary_expression "*(byte *)(param_1 + 0xca) & 1" (pointer_expression "*(byte *)(param_1 + 0xca)" * (cast_expression "(byte *)(param_1 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xca)" ( (binary_expression "param_1 + 0xca" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }" { (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "plVar8 = *(long **)(param_1 + 0xa8);" (assignment_expression "plVar8 = *(long **)(param_1 + 0xa8)" identifier = (pointer_expression "*(long **)(param_1 + 0xa8)" * (cast_expression "(long **)(param_1 + 0xa8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) ))))) ;) (if_statement "if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(plVar8 != *(long **)(param_1 + 0xb0))" ( (binary_expression "plVar8 != *(long **)(param_1 + 0xb0)" identifier != (pointer_expression "*(long **)(param_1 + 0xb0)" * (cast_expression "(long **)(param_1 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) (compound_statement "{\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }" { (expression_statement "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }" if (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }" { (do_statement "do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);" do (compound_statement "{\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        }" { (expression_statement "(**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);" (call_expression "(**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1])" (parenthesized_expression "(**(code **)(*plVar7 + 0x30))" ( (pointer_expression "**(code **)(*plVar7 + 0x30)" * (pointer_expression "*(code **)(*plVar7 + 0x30)" * (cast_expression "(code **)(*plVar7 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar7 + 0x30)" ( (binary_expression "*plVar7 + 0x30" (pointer_expression "*plVar7" * identifier) + number_literal) ))))) )) (argument_list "(&local_58,plVar7,plVar8[1])" ( (pointer_expression "&local_58" & identifier) , identifier , (subscript_expression "plVar8[1]" identifier [ number_literal ]) ))) ;) (expression_statement "memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);" (call_expression "memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50)" identifier (argument_list "((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50)" ( (cast_expression "(void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar8 + lVar3 + *(long *)(param_2 + 0x18))" ( (binary_expression "*plVar8 + lVar3 + *(long *)(param_2 + 0x18)" (binary_expression "*plVar8 + lVar3" (pointer_expression "*plVar8" * identifier) + identifier) + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ))) , identifier , identifier ))) ;) (if_statement "if (local_58 != local_48) {\n            FUN_002a2980();\n          }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n            FUN_002a2980();\n          }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar8 = plVar8 + 2;" (assignment_expression "plVar8 = plVar8 + 2" identifier = (binary_expression "plVar8 + 2" identifier + number_literal)) ;) (if_statement "if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" if (parenthesized_expression "(plVar8 == *(long **)(param_1 + 0xb0))" ( (binary_expression "plVar8 == *(long **)(param_1 + 0xb0)" identifier == (pointer_expression "*(long **)(param_1 + 0xb0)" * (cast_expression "(long **)(param_1 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) (compound_statement "{\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" { (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001eded2;" goto statement_identifier ;)) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;) })) (expression_statement "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");" statement_identifier : (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) }) (else_clause "else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" else (compound_statement "{\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" { (if_statement "if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0))" ( (binary_expression "*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)" (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) != (pointer_expression "*(long *)(param_1 + 0xb0)" * (cast_expression "(long *)(param_1 + 0xb0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }" { (expression_statement "FUN_00199900("../../gold/output.cc",0xe9c,"do_write");" (call_expression "FUN_00199900("../../gold/output.cc",0xe9c,"do_write")" identifier (argument_list "("../../gold/output.cc",0xe9c,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (labeled_statement "LAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);" statement_identifier : (expression_statement "lVar3 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) }))) (expression_statement "puVar9 = *(uint **)(param_1 + 0x88);" (assignment_expression "puVar9 = *(uint **)(param_1 + 0x88)" identifier = (pointer_expression "*(uint **)(param_1 + 0x88)" * (cast_expression "(uint **)(param_1 + 0x88)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(long *)(param_1 + 0xa0) + lVar3;" (assignment_expression "uVar10 = *(long *)(param_1 + 0xa0) + lVar3" identifier = (binary_expression "*(long *)(param_1 + 0xa0) + lVar3" (pointer_expression "*(long *)(param_1 + 0xa0)" * (cast_expression "(long *)(param_1 + 0xa0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }" if (parenthesized_expression "(puVar9 != *(uint **)(param_1 + 0x90))" ( (binary_expression "puVar9 != *(uint **)(param_1 + 0x90)" identifier != (pointer_expression "*(uint **)(param_1 + 0x90)" * (cast_expression "(uint **)(param_1 + 0x90)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }" { (do_statement "do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);" do (compound_statement "{\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    }" { (if_statement "if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" if (parenthesized_expression "(puVar9[1] == 0)" ( (binary_expression "puVar9[1] == 0" (subscript_expression "puVar9[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }" { (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }" if (parenthesized_expression "(0xfffffffb < uVar6)" ( (binary_expression "0xfffffffb < uVar6" number_literal < identifier) )) (compound_statement "{\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }" { (expression_statement "pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);" (assignment_expression "pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18)" identifier = (pointer_expression "*(code **)(**(long **)(puVar9 + 4) + 0x18)" * (cast_expression "(code **)(**(long **)(puVar9 + 4) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(puVar9 + 4) + 0x18)" ( (binary_expression "**(long **)(puVar9 + 4) + 0x18" (pointer_expression "**(long **)(puVar9 + 4)" * (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }" if (parenthesized_expression "(pcVar2 == FUN_00168610)" ( (binary_expression "pcVar2 == FUN_00168610" identifier == identifier) )) (compound_statement "{\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }" { (expression_statement "lVar3 = (*(long **)(puVar9 + 4))[6];" (assignment_expression "lVar3 = (*(long **)(puVar9 + 4))[6]" identifier = (subscript_expression "(*(long **)(puVar9 + 4))[6]" (parenthesized_expression "(*(long **)(puVar9 + 4))" ( (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) }) (else_clause "else {\n            lVar3 = (*pcVar2)();\n          }" else (compound_statement "{\n            lVar3 = (*pcVar2)();\n          }" { (expression_statement "lVar3 = (*pcVar2)();" (assignment_expression "lVar3 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) }))) (goto_statement "goto LAB_001edf5a;" goto statement_identifier ;) })) }) (else_clause "else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" else (compound_statement "{\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" { (expression_statement "lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);" (assignment_expression "lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f)" identifier = (binary_expression "1L << ((char)puVar9[1] - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)puVar9[1] - 1U & 0x3f)" ( (binary_expression "(char)puVar9[1] - 1U & 0x3f" (binary_expression "(char)puVar9[1] - 1U" (cast_expression "(char)puVar9[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar9[1]" identifier [ number_literal ])) - number_literal) & number_literal) )))) ;) (labeled_statement "LAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" statement_identifier : (if_statement "if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar6 = *puVar9;\n        }" { (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) }) (else_clause "else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" else (compound_statement "{\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" { (expression_statement "uVar4 = (uVar10 - 1) + lVar3 & -lVar3;" (assignment_expression "uVar4 = (uVar10 - 1) + lVar3 & -lVar3" identifier = (binary_expression "(uVar10 - 1) + lVar3 & -lVar3" (binary_expression "(uVar10 - 1) + lVar3" (parenthesized_expression "(uVar10 - 1)" ( (binary_expression "uVar10 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-lVar3" - identifier))) ;) (if_statement "if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }" if (parenthesized_expression "(((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4))" ( (binary_expression "((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)" (parenthesized_expression "((*(byte *)(param_1 + 0xca) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xca) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xca) & 1)" ( (binary_expression "*(byte *)(param_1 + 0xca) & 1" (pointer_expression "*(byte *)(param_1 + 0xca)" * (cast_expression "(byte *)(param_1 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xca)" ( (binary_expression "param_1 + 0xca" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(uVar10 != uVar4)" ( (binary_expression "uVar10 != uVar4" identifier != identifier) ))) )) (compound_statement "{\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }" { (expression_statement "plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" ( (binary_expression "PTR_DAT_003f85c0 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar8 == (long *)0x0) goto LAB_001ee134;" if (parenthesized_expression "(plVar8 == (long *)0x0)" ( (binary_expression "plVar8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001ee134;" goto statement_identifier ;)) (expression_statement "(**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);" (call_expression "(**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10)" (parenthesized_expression "(**(code **)(*plVar8 + 0x30))" ( (pointer_expression "**(code **)(*plVar8 + 0x30)" * (pointer_expression "*(code **)(*plVar8 + 0x30)" * (cast_expression "(code **)(*plVar8 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar8 + 0x30)" ( (binary_expression "*plVar8 + 0x30" (pointer_expression "*plVar8" * identifier) + number_literal) ))))) )) (argument_list "(&local_58,plVar8,uVar4 - uVar10)" ( (pointer_expression "&local_58" & identifier) , identifier , (binary_expression "uVar4 - uVar10" identifier - identifier) ))) ;) (expression_statement "memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);" (call_expression "memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50)" identifier (argument_list "((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50)" ( (cast_expression "(void *)(*(long *)(param_2 + 0x18) + uVar10)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x18) + uVar10)" ( (binary_expression "*(long *)(param_2 + 0x18) + uVar10" (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) + identifier) ))) , identifier , identifier ))) ;) (if_statement "if (local_58 != local_48) {\n              FUN_002a2980();\n            }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n              FUN_002a2980();\n            }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) })))) }))) (if_statement "if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }" if (parenthesized_expression "((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9))" ( (binary_expression "(uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)" (parenthesized_expression "(uVar6 + 4 < 4)" ( (binary_expression "uVar6 + 4 < 4" (binary_expression "uVar6 + 4" identifier + number_literal) < number_literal) )) && (parenthesized_expression "((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)" ( (comma_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9" (call_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2)" (parenthesized_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))" ( (pointer_expression "**(code **)(**(long **)(puVar9 + 4) + 0x10)" * (pointer_expression "*(code **)(**(long **)(puVar9 + 4) + 0x10)" * (cast_expression "(code **)(**(long **)(puVar9 + 4) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(puVar9 + 4) + 0x10)" ( (binary_expression "**(long **)(puVar9 + 4) + 0x10" (pointer_expression "**(long **)(puVar9 + 4)" * (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(puVar9 + 4),param_2)" ( (pointer_expression "*(long **)(puVar9 + 4)" * (cast_expression "(long **)(puVar9 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) , identifier ))) , (binary_expression "0xfffffffb < *puVar9" number_literal < (pointer_expression "*puVar9" * identifier))) ))) )) (compound_statement "{\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }" { (if_statement "if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }" if (parenthesized_expression "((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2)" ( (binary_expression "*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2" (pointer_expression "*(byte *)(*(long *)(puVar9 + 4) + 0x20)" * (cast_expression "(byte *)(*(long *)(puVar9 + 4) + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(puVar9 + 4) + 0x20)" ( (binary_expression "*(long *)(puVar9 + 4) + 0x20" (pointer_expression "*(long *)(puVar9 + 4)" * (cast_expression "(long *)(puVar9 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n          FUN_001ed720();\n        }" { (expression_statement "FUN_001ed720();" (call_expression "FUN_001ed720()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(puVar9 + 4) + 0x10)" * (cast_expression "(long *)(*(long *)(puVar9 + 4) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(puVar9 + 4) + 0x10)" ( (binary_expression "*(long *)(puVar9 + 4) + 0x10" (pointer_expression "*(long *)(puVar9 + 4)" * (cast_expression "(long *)(puVar9 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }" else (compound_statement "{\n        lVar3 = *(long *)(puVar9 + 2);\n      }" { (expression_statement "lVar3 = *(long *)(puVar9 + 2);" (assignment_expression "lVar3 = *(long *)(puVar9 + 2)" identifier = (pointer_expression "*(long *)(puVar9 + 2)" * (cast_expression "(long *)(puVar9 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar10 = uVar10 + lVar3;" (assignment_expression "uVar10 = uVar10 + lVar3" identifier = (binary_expression "uVar10 + lVar3" identifier + identifier)) ;) (expression_statement "puVar9 = puVar9 + 8;" (assignment_expression "puVar9 = puVar9 + 8" identifier = (binary_expression "puVar9 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)(param_1 + 0x90) != puVar9)" ( (binary_expression "*(uint **)(param_1 + 0x90) != puVar9" (pointer_expression "*(uint **)(param_1 + 0x90)" * (cast_expression "(uint **)(param_1 + 0x90)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) != identifier) )) ;) })) (expression_statement "plVar8 = *(long **)(param_1 + 0x130);" (assignment_expression "plVar8 = *(long **)(param_1 + 0x130)" identifier = (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (if_statement "if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }" if (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }" { (expression_statement "plVar7 = *(long **)(param_1 + 0xf8);" (assignment_expression "plVar7 = *(long **)(param_1 + 0xf8)" identifier = (pointer_expression "*(long **)(param_1 + 0xf8)" * (cast_expression "(long **)(param_1 + 0xf8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) ))))) ;) (if_statement "if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }" if (parenthesized_expression "(plVar7 != (long *)(param_1 + 0xf8))" ( (binary_expression "plVar7 != (long *)(param_1 + 0xf8)" identifier != (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) )) (compound_statement "{\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }" { (expression_statement "lVar3 = plVar7[2];" (assignment_expression "lVar3 = plVar7[2]" identifier = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "lVar5 = plVar7[3] - lVar3;" (assignment_expression "lVar5 = plVar7[3] - lVar3" identifier = (binary_expression "plVar7[3] - lVar3" (subscript_expression "plVar7[3]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" identifier = (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }" while (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }" { (expression_statement "(**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);" (call_expression "(**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5)" (parenthesized_expression "(**(code **)(*plVar8 + 0x18))" ( (pointer_expression "**(code **)(*plVar8 + 0x18)" * (pointer_expression "*(code **)(*plVar8 + 0x18)" * (cast_expression "(code **)(*plVar8 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar8 + 0x18)" ( (binary_expression "*plVar8 + 0x18" (pointer_expression "*plVar8" * identifier) + number_literal) ))))) )) (argument_list "(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5)" ( identifier , identifier , (binary_expression "lVar3 + *(long *)(param_1 + 0x18)" identifier + (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) , identifier ))) ;) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;" if (parenthesized_expression "(plVar7 == (long *)(param_1 + 0xf8))" ( (binary_expression "plVar7 == (long *)(param_1 + 0xf8)" identifier == (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) )) (goto_statement "goto LAB_001ee0f4;" goto statement_identifier ;)) (expression_statement "lVar3 = plVar7[2];" (assignment_expression "lVar3 = plVar7[2]" identifier = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "plVar8 = *(long **)(param_1 + 0x130);" (assignment_expression "plVar8 = *(long **)(param_1 + 0x130)" identifier = (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = plVar7[3] - lVar3;" (assignment_expression "lVar5 = plVar7[3] - lVar3" identifier = (binary_expression "plVar7[3] - lVar3" (subscript_expression "plVar7[3]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" identifier = (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");" statement_identifier : (expression_statement "FUN_00199900("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_00199900("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (labeled_statement "LAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" statement_identifier : (if_statement "if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" if (parenthesized_expression "(0 < *(long *)(param_1 + 0x138))" ( (binary_expression "0 < *(long *)(param_1 + 0x138)" number_literal < (pointer_expression "*(long *)(param_1 + 0x138)" * (cast_expression "(long *)(param_1 + 0x138)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) ))))) )) (compound_statement "{\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" { (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ee02e;" goto statement_identifier ;)) (expression_statement "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));" (call_expression "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18))" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x130) + 0x18)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x130) + 0x18)" * (cast_expression "(code **)(**(long **)(param_1 + 0x130) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x130) + 0x18)" ( (binary_expression "**(long **)(param_1 + 0x130) + 0x18" (pointer_expression "**(long **)(param_1 + 0x130)" * (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18))" ( (pointer_expression "*(long **)(param_1 + 0x130)" * (cast_expression "(long **)(param_1 + 0x130)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) , identifier , (binary_expression "(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18)" (parenthesized_expression "(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138))" ( (binary_expression "*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x138)" * (cast_expression "(long *)(param_1 + 0x138)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) ))))) )) + (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ))) ;) }))) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - LIT) & LIT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + IDENT) & (unary_expression - IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , (binary_expression IDENT - IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ))) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })))) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) && (parenthesized_expression ( (comma_expression (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) , (binary_expression LIT < (pointer_expression * IDENT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) }))) })) (return_statement return ;) })))
(function_definition "void FUN_001ede00(long param_1,long param_2)\n\n{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001ede00(long param_1,long param_2)" (identifier "FUN_001ede00") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  byte bVar1;\n  code *pcVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  uint uVar6;\n  long *plVar7;\n  long *plVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 *local_58;\n  size_t local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }\n  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }\n  puVar9 = *(uint **)(param_1 + 0x88);\n  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;\n  if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }\n  plVar8 = *(long **)(param_1 + 0x130);\n  if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "undefined1 *local_58;" (type_identifier "undefined1") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "undefined1 local_48 [24];" (type_identifier "undefined1") (array_declarator "local_48 [24]" (identifier "local_48") ([ "[") (number_literal "24") (] "]")) (; ";")) (if_statement "if ((*(byte *)(param_1 + 200) & 0x20) != 0) {\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 200) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 200) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_1 + 200) & 0x20)" (( "(") (binary_expression "*(byte *)(param_1 + 200) & 0x20" (pointer_expression "*(byte *)(param_1 + 200)" (* "*") (cast_expression "(byte *)(param_1 + 200)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00199900("../../gold/output.cc",0xe99,"do_write");\n  }" ({ "{") (expression_statement "FUN_00199900("../../gold/output.cc",0xe99,"do_write");" (call_expression "FUN_00199900("../../gold/output.cc",0xe99,"do_write")" (identifier "FUN_00199900") (argument_list "("../../gold/output.cc",0xe99,"do_write")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0xe99") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0xca) & 1) == 0) {\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }\n  else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0xca) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xca) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xca) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0xca) & 1" (pointer_expression "*(byte *)(param_1 + 0xca)" (* "*") (cast_expression "(byte *)(param_1 + 0xca)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xca)" (( "(") (binary_expression "param_1 + 0xca" (identifier "param_1") (+ "+") (number_literal "0xca")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n    lVar3 = *(long *)(param_1 + 0x18);\n    plVar8 = *(long **)(param_1 + 0xa8);\n    if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }\n  }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ee02e;" (goto "goto") (statement_identifier "LAB_001ee02e") (; ";"))) (expression_statement "lVar3 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x18)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "plVar8 = *(long **)(param_1 + 0xa8);" (assignment_expression "plVar8 = *(long **)(param_1 + 0xa8)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(param_1 + 0xa8)" (* "*") (cast_expression "(long **)(param_1 + 0xa8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")"))))) (; ";")) (if_statement "if (plVar8 != *(long **)(param_1 + 0xb0)) {\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }" (if "if") (parenthesized_expression "(plVar8 != *(long **)(param_1 + 0xb0))" (( "(") (binary_expression "plVar8 != *(long **)(param_1 + 0xb0)" (identifier "plVar8") (!= "!=") (pointer_expression "*(long **)(param_1 + 0xb0)" (* "*") (cast_expression "(long **)(param_1 + 0xb0)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (compound_statement "{\n      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n      if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }\nLAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");\n    }" ({ "{") (expression_statement "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18)" (identifier "plVar7") (= "=") (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (plVar7 != (long *)0x0) {\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }" (if "if") (parenthesized_expression "(plVar7 != (long *)0x0)" (( "(") (binary_expression "plVar7 != (long *)0x0" (identifier "plVar7") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);\n      }" ({ "{") (do_statement "do {\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        } while (plVar7 != (long *)0x0);" (do "do") (compound_statement "{\n          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);\n          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);\n          if (local_58 != local_48) {\n            FUN_002a2980();\n          }\n          plVar8 = plVar8 + 2;\n          if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }\n          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n        }" ({ "{") (expression_statement "(**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);" (call_expression "(**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1])" (parenthesized_expression "(**(code **)(*plVar7 + 0x30))" (( "(") (pointer_expression "**(code **)(*plVar7 + 0x30)" (* "*") (pointer_expression "*(code **)(*plVar7 + 0x30)" (* "*") (cast_expression "(code **)(*plVar7 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar7 + 0x30)" (( "(") (binary_expression "*plVar7 + 0x30" (pointer_expression "*plVar7" (* "*") (identifier "plVar7")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(&local_58,plVar7,plVar8[1])" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "plVar7") (, ",") (subscript_expression "plVar8[1]" (identifier "plVar8") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);" (call_expression "memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50)" (identifier "memcpy") (argument_list "((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50)" (( "(") (cast_expression "(void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar8 + lVar3 + *(long *)(param_2 + 0x18))" (( "(") (binary_expression "*plVar8 + lVar3 + *(long *)(param_2 + 0x18)" (binary_expression "*plVar8 + lVar3" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (+ "+") (identifier "lVar3")) (+ "+") (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) (, ",") (identifier "local_58") (, ",") (identifier "local_50") () ")"))) (; ";")) (if_statement "if (local_58 != local_48) {\n            FUN_002a2980();\n          }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n            FUN_002a2980();\n          }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar8 = plVar8 + 2;" (assignment_expression "plVar8 = plVar8 + 2" (identifier "plVar8") (= "=") (binary_expression "plVar8 + 2" (identifier "plVar8") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (plVar8 == *(long **)(param_1 + 0xb0)) {\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" (if "if") (parenthesized_expression "(plVar8 == *(long **)(param_1 + 0xb0))" (( "(") (binary_expression "plVar8 == *(long **)(param_1 + 0xb0)" (identifier "plVar8") (== "==") (pointer_expression "*(long **)(param_1 + 0xb0)" (* "*") (cast_expression "(long **)(param_1 + 0xb0)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (compound_statement "{\n            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;\n            goto LAB_001ee02e;\n          }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001eded2;" (goto "goto") (statement_identifier "LAB_001eded2") (; ";"))) (goto_statement "goto LAB_001ee02e;" (goto "goto") (statement_identifier "LAB_001ee02e") (; ";")) (} "}"))) (expression_statement "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18)" (identifier "plVar7") (= "=") (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar7 != (long *)0x0)" (( "(") (binary_expression "plVar7 != (long *)0x0" (identifier "plVar7") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001ee134:\n                    \n      FUN_00199900("../../gold/parameters.h",0x69,"target");" (statement_identifier "LAB_001ee134") (: ":") (expression_statement "FUN_00199900("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00199900("../../gold/parameters.h",0x69,"target")" (identifier "FUN_00199900") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" (else "else") (compound_statement "{\n    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }\n    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\nLAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);\n  }" ({ "{") (if_statement "if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0))" (( "(") (binary_expression "*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)" (pointer_expression "*(long *)(param_1 + 0xa8)" (* "*") (cast_expression "(long *)(param_1 + 0xa8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))) (!= "!=") (pointer_expression "*(long *)(param_1 + 0xb0)" (* "*") (cast_expression "(long *)(param_1 + 0xb0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (compound_statement "{\n                    \n      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");\n    }" ({ "{") (expression_statement "FUN_00199900("../../gold/output.cc",0xe9c,"do_write");" (call_expression "FUN_00199900("../../gold/output.cc",0xe9c,"do_write")" (identifier "FUN_00199900") (argument_list "("../../gold/output.cc",0xe9c,"do_write")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0xe9c") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ee02e;" (goto "goto") (statement_identifier "LAB_001ee02e") (; ";"))) (labeled_statement "LAB_001eded2:\n    lVar3 = *(long *)(param_1 + 0x18);" (statement_identifier "LAB_001eded2") (: ":") (expression_statement "lVar3 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x18)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "puVar9 = *(uint **)(param_1 + 0x88);" (assignment_expression "puVar9 = *(uint **)(param_1 + 0x88)" (identifier "puVar9") (= "=") (pointer_expression "*(uint **)(param_1 + 0x88)" (* "*") (cast_expression "(uint **)(param_1 + 0x88)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(long *)(param_1 + 0xa0) + lVar3;" (assignment_expression "uVar10 = *(long *)(param_1 + 0xa0) + lVar3" (identifier "uVar10") (= "=") (binary_expression "*(long *)(param_1 + 0xa0) + lVar3" (pointer_expression "*(long *)(param_1 + 0xa0)" (* "*") (cast_expression "(long *)(param_1 + 0xa0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")")))) (+ "+") (identifier "lVar3"))) (; ";")) (if_statement "if (puVar9 != *(uint **)(param_1 + 0x90)) {\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }" (if "if") (parenthesized_expression "(puVar9 != *(uint **)(param_1 + 0x90))" (( "(") (binary_expression "puVar9 != *(uint **)(param_1 + 0x90)" (identifier "puVar9") (!= "!=") (pointer_expression "*(uint **)(param_1 + 0x90)" (* "*") (cast_expression "(uint **)(param_1 + 0x90)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);\n  }" ({ "{") (do_statement "do {\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    } while (*(uint **)(param_1 + 0x90) != puVar9);" (do "do") (compound_statement "{\n      if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }\n      if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }\n      uVar10 = uVar10 + lVar3;\n      puVar9 = puVar9 + 8;\n    }" ({ "{") (if_statement "if (puVar9[1] == 0) {\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }\n      else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" (if "if") (parenthesized_expression "(puVar9[1] == 0)" (( "(") (binary_expression "puVar9[1] == 0" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar6 = *puVar9;\n        if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }\n      }" ({ "{") (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" (identifier "uVar6") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (if_statement "if (0xfffffffb < uVar6) {\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }" (if "if") (parenthesized_expression "(0xfffffffb < uVar6)" (( "(") (binary_expression "0xfffffffb < uVar6" (number_literal "0xfffffffb") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);\n          if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }\n          goto LAB_001edf5a;\n        }" ({ "{") (expression_statement "pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);" (assignment_expression "pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(**(long **)(puVar9 + 4) + 0x18)" (* "*") (cast_expression "(code **)(**(long **)(puVar9 + 4) + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(puVar9 + 4) + 0x18)" (( "(") (binary_expression "**(long **)(puVar9 + 4) + 0x18" (pointer_expression "**(long **)(puVar9 + 4)" (* "*") (pointer_expression "*(long **)(puVar9 + 4)" (* "*") (cast_expression "(long **)(puVar9 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (pcVar2 == FUN_00168610) {\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }\n          else {\n            lVar3 = (*pcVar2)();\n          }" (if "if") (parenthesized_expression "(pcVar2 == FUN_00168610)" (( "(") (binary_expression "pcVar2 == FUN_00168610" (identifier "pcVar2") (== "==") (identifier "FUN_00168610")) () ")")) (compound_statement "{\n            lVar3 = (*(long **)(puVar9 + 4))[6];\n          }" ({ "{") (expression_statement "lVar3 = (*(long **)(puVar9 + 4))[6];" (assignment_expression "lVar3 = (*(long **)(puVar9 + 4))[6]" (identifier "lVar3") (= "=") (subscript_expression "(*(long **)(puVar9 + 4))[6]" (parenthesized_expression "(*(long **)(puVar9 + 4))" (( "(") (pointer_expression "*(long **)(puVar9 + 4)" (* "*") (cast_expression "(long **)(puVar9 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) () ")")) ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            lVar3 = (*pcVar2)();\n          }" (else "else") (compound_statement "{\n            lVar3 = (*pcVar2)();\n          }" ({ "{") (expression_statement "lVar3 = (*pcVar2)();" (assignment_expression "lVar3 = (*pcVar2)()" (identifier "lVar3") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_001edf5a;" (goto "goto") (statement_identifier "LAB_001edf5a") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" (else "else") (compound_statement "{\n        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);\nLAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }\n      }" ({ "{") (expression_statement "lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);" (assignment_expression "lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f)" (identifier "lVar3") (= "=") (binary_expression "1L << ((char)puVar9[1] - 1U & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((char)puVar9[1] - 1U & 0x3f)" (( "(") (binary_expression "(char)puVar9[1] - 1U & 0x3f" (binary_expression "(char)puVar9[1] - 1U" (cast_expression "(char)puVar9[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (- "-") (number_literal "1U")) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (labeled_statement "LAB_001edf5a:\n        if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" (statement_identifier "LAB_001edf5a") (: ":") (if_statement "if (lVar3 == 0) {\n          uVar6 = *puVar9;\n        }\n        else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar6 = *puVar9;\n        }" ({ "{") (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" (identifier "uVar6") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (} "}")) (else_clause "else {\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" (else "else") (compound_statement "{\n          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;\n          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }\n          uVar6 = *puVar9;\n          uVar10 = uVar4;\n        }" ({ "{") (expression_statement "uVar4 = (uVar10 - 1) + lVar3 & -lVar3;" (assignment_expression "uVar4 = (uVar10 - 1) + lVar3 & -lVar3" (identifier "uVar4") (= "=") (binary_expression "(uVar10 - 1) + lVar3 & -lVar3" (binary_expression "(uVar10 - 1) + lVar3" (parenthesized_expression "(uVar10 - 1)" (( "(") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1")) () ")")) (+ "+") (identifier "lVar3")) (& "&") (unary_expression "-lVar3" (- "-") (identifier "lVar3")))) (; ";")) (if_statement "if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }" (if "if") (parenthesized_expression "(((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4))" (( "(") (binary_expression "((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)" (parenthesized_expression "((*(byte *)(param_1 + 0xca) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xca) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xca) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0xca) & 1" (pointer_expression "*(byte *)(param_1 + 0xca)" (* "*") (cast_expression "(byte *)(param_1 + 0xca)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xca)" (( "(") (binary_expression "param_1 + 0xca" (identifier "param_1") (+ "+") (number_literal "0xca")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar10 != uVar4)" (( "(") (binary_expression "uVar10 != uVar4" (identifier "uVar10") (!= "!=") (identifier "uVar4")) () ")"))) () ")")) (compound_statement "{\n            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);\n            if (plVar8 == (long *)0x0) goto LAB_001ee134;\n            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);\n            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);\n            if (local_58 != local_48) {\n              FUN_002a2980();\n            }\n          }" ({ "{") (expression_statement "plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);" (assignment_expression "plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(PTR_DAT_003f85c0 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_003f85c0 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_003f85c0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003f85c0 + 0x18" (identifier "PTR_DAT_003f85c0") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (plVar8 == (long *)0x0) goto LAB_001ee134;" (if "if") (parenthesized_expression "(plVar8 == (long *)0x0)" (( "(") (binary_expression "plVar8 == (long *)0x0" (identifier "plVar8") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001ee134;" (goto "goto") (statement_identifier "LAB_001ee134") (; ";"))) (expression_statement "(**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);" (call_expression "(**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10)" (parenthesized_expression "(**(code **)(*plVar8 + 0x30))" (( "(") (pointer_expression "**(code **)(*plVar8 + 0x30)" (* "*") (pointer_expression "*(code **)(*plVar8 + 0x30)" (* "*") (cast_expression "(code **)(*plVar8 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar8 + 0x30)" (( "(") (binary_expression "*plVar8 + 0x30" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(&local_58,plVar8,uVar4 - uVar10)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "plVar8") (, ",") (binary_expression "uVar4 - uVar10" (identifier "uVar4") (- "-") (identifier "uVar10")) () ")"))) (; ";")) (expression_statement "memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);" (call_expression "memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50)" (identifier "memcpy") (argument_list "((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50)" (( "(") (cast_expression "(void *)(*(long *)(param_2 + 0x18) + uVar10)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x18) + uVar10)" (( "(") (binary_expression "*(long *)(param_2 + 0x18) + uVar10" (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "uVar10")) () ")"))) (, ",") (identifier "local_58") (, ",") (identifier "local_50") () ")"))) (; ";")) (if_statement "if (local_58 != local_48) {\n              FUN_002a2980();\n            }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n              FUN_002a2980();\n            }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar6 = *puVar9;" (assignment_expression "uVar6 = *puVar9" (identifier "uVar6") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" (identifier "uVar10") (= "=") (identifier "uVar4")) (; ";")) (} "}"))))) (} "}")))) (if_statement "if ((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)) {\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }\n      else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }" (if "if") (parenthesized_expression "((uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9))" (( "(") (binary_expression "(uVar6 + 4 < 4) &&\n         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)" (parenthesized_expression "(uVar6 + 4 < 4)" (( "(") (binary_expression "uVar6 + 4 < 4" (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4")) (< "<") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9)" (( "(") (comma_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),\n         0xfffffffb < *puVar9" (call_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2)" (parenthesized_expression "(**(code **)(**(long **)(puVar9 + 4) + 0x10))" (( "(") (pointer_expression "**(code **)(**(long **)(puVar9 + 4) + 0x10)" (* "*") (pointer_expression "*(code **)(**(long **)(puVar9 + 4) + 0x10)" (* "*") (cast_expression "(code **)(**(long **)(puVar9 + 4) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(puVar9 + 4) + 0x10)" (( "(") (binary_expression "**(long **)(puVar9 + 4) + 0x10" (pointer_expression "**(long **)(puVar9 + 4)" (* "*") (pointer_expression "*(long **)(puVar9 + 4)" (* "*") (cast_expression "(long **)(puVar9 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(long **)(puVar9 + 4),param_2)" (( "(") (pointer_expression "*(long **)(puVar9 + 4)" (* "*") (cast_expression "(long **)(puVar9 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "param_2") () ")"))) (, ",") (binary_expression "0xfffffffb < *puVar9" (number_literal "0xfffffffb") (< "<") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) () ")"))) () ")")) (compound_statement "{\n        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }\n        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);\n      }" ({ "{") (if_statement "if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {\n                    \n          FUN_001ed720();\n        }" (if "if") (parenthesized_expression "((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2" (pointer_expression "*(byte *)(*(long *)(puVar9 + 4) + 0x20)" (* "*") (cast_expression "(byte *)(*(long *)(puVar9 + 4) + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(puVar9 + 4) + 0x20)" (( "(") (binary_expression "*(long *)(puVar9 + 4) + 0x20" (pointer_expression "*(long *)(puVar9 + 4)" (* "*") (cast_expression "(long *)(puVar9 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_001ed720();\n        }" ({ "{") (expression_statement "FUN_001ed720();" (call_expression "FUN_001ed720()" (identifier "FUN_001ed720") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(puVar9 + 4) + 0x10)" (* "*") (cast_expression "(long *)(*(long *)(puVar9 + 4) + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(puVar9 + 4) + 0x10)" (( "(") (binary_expression "*(long *)(puVar9 + 4) + 0x10" (pointer_expression "*(long *)(puVar9 + 4)" (* "*") (cast_expression "(long *)(puVar9 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        lVar3 = *(long *)(puVar9 + 2);\n      }" (else "else") (compound_statement "{\n        lVar3 = *(long *)(puVar9 + 2);\n      }" ({ "{") (expression_statement "lVar3 = *(long *)(puVar9 + 2);" (assignment_expression "lVar3 = *(long *)(puVar9 + 2)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(puVar9 + 2)" (* "*") (cast_expression "(long *)(puVar9 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 2)" (( "(") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar10 = uVar10 + lVar3;" (assignment_expression "uVar10 = uVar10 + lVar3" (identifier "uVar10") (= "=") (binary_expression "uVar10 + lVar3" (identifier "uVar10") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "puVar9 = puVar9 + 8;" (assignment_expression "puVar9 = puVar9 + 8" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 8" (identifier "puVar9") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(uint **)(param_1 + 0x90) != puVar9)" (( "(") (binary_expression "*(uint **)(param_1 + 0x90) != puVar9" (pointer_expression "*(uint **)(param_1 + 0x90)" (* "*") (cast_expression "(uint **)(param_1 + 0x90)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")")))) (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (} "}"))) (expression_statement "plVar8 = *(long **)(param_1 + 0x130);" (assignment_expression "plVar8 = *(long **)(param_1 + 0x130)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(param_1 + 0x130)" (* "*") (cast_expression "(long **)(param_1 + 0x130)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (if_statement "if (plVar8 != (long *)0x0) {\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }" (if "if") (parenthesized_expression "(plVar8 != (long *)0x0)" (( "(") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    plVar7 = *(long **)(param_1 + 0xf8);\n    if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }\nLAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }\n  }" ({ "{") (expression_statement "plVar7 = *(long **)(param_1 + 0xf8);" (assignment_expression "plVar7 = *(long **)(param_1 + 0xf8)" (identifier "plVar7") (= "=") (pointer_expression "*(long **)(param_1 + 0xf8)" (* "*") (cast_expression "(long **)(param_1 + 0xf8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")"))))) (; ";")) (if_statement "if (plVar7 != (long *)(param_1 + 0xf8)) {\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }" (if "if") (parenthesized_expression "(plVar7 != (long *)(param_1 + 0xf8))" (( "(") (binary_expression "plVar7 != (long *)(param_1 + 0xf8)" (identifier "plVar7") (!= "!=") (cast_expression "(long *)(param_1 + 0xf8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) () ")")) (compound_statement "{\n      lVar3 = plVar7[2];\n      lVar5 = plVar7[3] - lVar3;\n      bVar1 = *(byte *)(param_1 + 0x20);\n      while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }\nLAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");\n    }" ({ "{") (expression_statement "lVar3 = plVar7[2];" (assignment_expression "lVar3 = plVar7[2]" (identifier "lVar3") (= "=") (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lVar5 = plVar7[3] - lVar3;" (assignment_expression "lVar5 = plVar7[3] - lVar3" (identifier "lVar5") (= "=") (binary_expression "plVar7[3] - lVar3" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (- "-") (identifier "lVar3"))) (; ";")) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (while_statement "while ((bVar1 & 4) != 0) {\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }" (while "while") (parenthesized_expression "((bVar1 & 4) != 0)" (( "(") (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" (( "(") (binary_expression "bVar1 & 4" (identifier "bVar1") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;\n        lVar3 = plVar7[2];\n        plVar8 = *(long **)(param_1 + 0x130);\n        lVar5 = plVar7[3] - lVar3;\n        bVar1 = *(byte *)(param_1 + 0x20);\n      }" ({ "{") (expression_statement "(**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);" (call_expression "(**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5)" (parenthesized_expression "(**(code **)(*plVar8 + 0x18))" (( "(") (pointer_expression "**(code **)(*plVar8 + 0x18)" (* "*") (pointer_expression "*(code **)(*plVar8 + 0x18)" (* "*") (cast_expression "(code **)(*plVar8 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar8 + 0x18)" (( "(") (binary_expression "*plVar8 + 0x18" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5)" (( "(") (identifier "plVar8") (, ",") (identifier "param_2") (, ",") (binary_expression "lVar3 + *(long *)(param_1 + 0x18)" (identifier "lVar3") (+ "+") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" (identifier "plVar7") (= "=") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (; ";")) (if_statement "if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;" (if "if") (parenthesized_expression "(plVar7 == (long *)(param_1 + 0xf8))" (( "(") (binary_expression "plVar7 == (long *)(param_1 + 0xf8)" (identifier "plVar7") (== "==") (cast_expression "(long *)(param_1 + 0xf8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) () ")")) (goto_statement "goto LAB_001ee0f4;" (goto "goto") (statement_identifier "LAB_001ee0f4") (; ";"))) (expression_statement "lVar3 = plVar7[2];" (assignment_expression "lVar3 = plVar7[2]" (identifier "lVar3") (= "=") (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "plVar8 = *(long **)(param_1 + 0x130);" (assignment_expression "plVar8 = *(long **)(param_1 + 0x130)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(param_1 + 0x130)" (* "*") (cast_expression "(long **)(param_1 + 0x130)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (expression_statement "lVar5 = plVar7[3] - lVar3;" (assignment_expression "lVar5 = plVar7[3] - lVar3" (identifier "lVar5") (= "=") (binary_expression "plVar7[3] - lVar3" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (- "-") (identifier "lVar3"))) (; ";")) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_001ee02e:\n                    \n      FUN_00199900("../../gold/output.h",0xe3,"offset");" (statement_identifier "LAB_001ee02e") (: ":") (expression_statement "FUN_00199900("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_00199900("../../gold/output.h",0xe3,"offset")" (identifier "FUN_00199900") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_001ee0f4:\n    if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" (statement_identifier "LAB_001ee0f4") (: ":") (if_statement "if (0 < *(long *)(param_1 + 0x138)) {\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" (if "if") (parenthesized_expression "(0 < *(long *)(param_1 + 0x138))" (( "(") (binary_expression "0 < *(long *)(param_1 + 0x138)" (number_literal "0") (< "<") (pointer_expression "*(long *)(param_1 + 0x138)" (* "*") (cast_expression "(long *)(param_1 + 0x138)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x138)" (( "(") (binary_expression "param_1 + 0x138" (identifier "param_1") (+ "+") (number_literal "0x138")) () ")"))))) () ")")) (compound_statement "{\n      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;\n      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));\n    }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ee02e;" (goto "goto") (statement_identifier "LAB_001ee02e") (; ";"))) (expression_statement "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18));" (call_expression "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))\n                (*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18))" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x130) + 0x18))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x130) + 0x18)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x130) + 0x18)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x130) + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x130) + 0x18)" (( "(") (binary_expression "**(long **)(param_1 + 0x130) + 0x18" (pointer_expression "**(long **)(param_1 + 0x130)" (* "*") (pointer_expression "*(long **)(param_1 + 0x130)" (* "*") (cast_expression "(long **)(param_1 + 0x130)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(*(long **)(param_1 + 0x130),param_2,\n                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18))" (( "(") (pointer_expression "*(long **)(param_1 + 0x130)" (* "*") (cast_expression "(long **)(param_1 + 0x130)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")")))) (, ",") (identifier "param_2") (, ",") (binary_expression "(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +\n                 *(long *)(param_1 + 0x18)" (parenthesized_expression "(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138))" (( "(") (binary_expression "*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0x138)" (* "*") (cast_expression "(long *)(param_1 + 0x138)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x138)" (( "(") (binary_expression "param_1 + 0x138" (identifier "param_1") (+ "+") (number_literal "0x138")) () ")"))))) () ")")) (+ "+") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) (; ";")) (} "}")))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void do_write(Output_section * this, Output_file * of) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 *of)

{
  type_3 var_25;
  type_4 *var_14;
  type_5 *var_23;
  type_6 *p_Var4;
  int iVar5;
  uint64_t var_17;
  type_7 extraout_var;
  type_8 var_19;
  long lVar8;
  type_9 var_13;
  type_10 *var_4;
  type_11 *this_00;
  type_12 var_21;
  type_13 var_11;
  long var_6;
  type_13 var_22;
  type_8 var_18;
  type_14 fill_data;
  
  if ((this->field_0xc8 & 0x20) != 0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/output.cc",0xe99,"do_write");
  }
  if ((this->field_0xca & 1) == 0) {
    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;
    var_6 = (this->super_Output_data).offset_;
    var_11 = (this->fills_).
              super__Vector_base<gold::Output_section::var_2,_std::var_7<gold::Output_section::var_2>var_3>
              ._M_impl._M_start;
    if (var_11 !=
        (this->fills_).
        super__Vector_base<gold::type_1::var_2,_std::var_7<gold::type_1::var_2>var_3>.
        _M_impl._M_finish) {
      var_4 = parameters->target_;
      if (var_4 != (type_10 *)0x0) {
        do {
          (*var_4->_vptr_Target[6])(&fill_data,var_4,var_11->length_);
          var_5(of->base_ + var_11->section_offset_ + var_6,fill_data._M_dataplus._M_p,
                 fill_data._M_string_length);
          if ((anon_union_16_2_edb7204a_for_basic_string<var_8,_std::char_traits<var_8>,_std::var_7<var_8>var_3>var_9
               *)fill_data._M_dataplus._M_p != &fill_data.field_2) {
            var_10(fill_data._M_dataplus._M_p);
          }
          var_11 = var_11 + 1;
          if (var_11 ==
              (this->fills_).
              super__Vector_base<gold::type_1::var_2,_std::var_7<gold::type_1::var_2>var_3>
              ._M_impl._M_finish) {
            if (((this->super_Output_data).field_0x20 & 4) != 0) goto LAB_001eded2;
            goto LAB_001ee02e;
          }
          var_4 = parameters->target_;
        } while (var_4 != (type_10 *)0x0);
      }
LAB_001ee134:
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/parameters.h",0x69,"target");
    }
  }
  else {
    if ((this->fills_).
        super__Vector_base<gold::type_1::var_2,_std::var_7<gold::type_1::var_2>var_3>.
        _M_impl._M_start !=
        (this->fills_).
        super__Vector_base<gold::type_1::var_2,_std::var_7<gold::type_1::var_2>var_3>.
        _M_impl._M_finish) {
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.cc",0xe9c,"do_write");
    }
    if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;
LAB_001eded2:
    var_6 = (this->super_Output_data).offset_;
  }
  var_22 = (this->input_sections_).
            super__Vector_base<gold::Output_section::var_12,_std::var_7<gold::Output_section::var_12>var_3>
            ._M_impl._M_start;
  var_18 = this->first_input_offset_ + var_6;
  if (var_22 !=
      (this->input_sections_).
      super__Vector_base<gold::type_1::var_12,_std::var_7<gold::type_1::var_12>var_3>
      ._M_impl._M_finish) {
    do {
      if (var_22->p2align_ == 0) {
        var_13 = var_22->shndx_;
        if (0xfffffffb < var_13) {
          var_14 = (((var_22->u2_).posd)->super_Output_data)._vptr_Output_data[3];
          if (var_14 == var_15::do_addralign) {
            var_17 = ((var_22->u2_).posd)->addralign_;
          }
          else {
            iVar5 = (*var_14)();
            var_17 = var_16(extraout_var,iVar5);
          }
          goto LAB_001edf5a;
        }
      }
      else {
        var_17 = 1L << ((char)var_22->p2align_ - 1U & 0x3f);
LAB_001edf5a:
        if (var_17 == 0) {
          var_13 = var_22->shndx_;
        }
        else {
          var_19 = (var_18 - 1) + var_17 & -var_17;
          if (((this->field_0xca & 1) != 0) && (var_18 != var_19)) {
            var_4 = parameters->target_;
            if (var_4 == (type_10 *)0x0) goto LAB_001ee134;
            (*var_4->_vptr_Target[6])(&fill_data,var_4,var_19 - var_18);
            var_5(of->base_ + var_18,fill_data._M_dataplus._M_p,fill_data._M_string_length);
            if ((anon_union_16_2_edb7204a_for_basic_string<var_8,_std::char_traits<var_8>,_std::var_7<var_8>var_3>var_9
                 *)fill_data._M_dataplus._M_p != &fill_data.field_2) {
              var_10(fill_data._M_dataplus._M_p);
            }
          }
          var_13 = var_22->shndx_;
          var_18 = var_19;
        }
      }
      if (var_13 + 4 < 4) {
        this_00 = (var_22->u2_).object;
        (*(this_00->super_Object)._vptr_Object[2])(this_00,of);
        if (var_22->shndx_ < 0xfffffffc) goto LAB_001edf10;
        if (((((var_22->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {
                    /* WARNING: Subroutine does not return */
          Input_section::var_20((var_12 *)this_00);
        }
        var_21 = (((var_22->u2_).object)->super_Object).name_._M_string_length;
      }
      else {
LAB_001edf10:
        var_21 = (var_22->u1_).var_20;
      }
      var_18 = var_18 + var_21;
      var_22 = var_22 + 1;
    } while ((this->input_sections_).
             super__Vector_base<gold::type_1::var_12,_std::var_7<gold::type_1::var_12>var_3>
             ._M_impl._M_finish != var_22);
  }
  var_23 = this->free_space_fill_;
  if (var_23 != (type_5 *)0x0) {
    p_Var4 = (this->free_list_).list_.
             super__List_base<gold::Free_list::var_24,_std::var_7<gold::Free_list::var_24>var_3>
             ._M_impl._M_node.super__List_node_base._M_next;
    if ((type_15 *)p_Var4 != &this->free_list_) {
      var_6 = (long)p_Var4[1]._M_next;
      lVar8 = (long)p_Var4[1]._M_prev - var_6;
      var_25 = (this->super_Output_data).field_0x20;
      while ((var_25 & 4) != 0) {
        (*var_23->_vptr_Output_fill[3])(var_23,of,var_6 + (this->super_Output_data).offset_,lVar8);
        p_Var4 = p_Var4->_M_next;
        if ((type_15 *)p_Var4 == &this->free_list_) goto LAB_001ee0f4;
        var_6 = (long)p_Var4[1]._M_next;
        var_23 = this->free_space_fill_;
        lVar8 = (long)p_Var4[1]._M_prev - var_6;
        var_25 = (this->super_Output_data).field_0x20;
      }
LAB_001ee02e:
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.h",0xe3,"offset");
    }
LAB_001ee0f4:
    if (0 < this->patch_space_) {
      if (((this->super_Output_data).field_0x20 & 4) == 0) goto LAB_001ee02e;
      (*this->free_space_fill_->_vptr_Output_fill[3])
                (this->free_space_fill_,of,
                 ((this->super_Output_data).data_size_ - this->patch_space_) +
                 (this->super_Output_data).offset_);
    }
  }
  return;
}


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

void MASKED(long param_1,long param_2)

{
  byte bVar1;
  code *pcVar2;
  long lVar3;
  ulong uVar4;
  long lVar5;
  uint uVar6;
  long *plVar7;
  long *plVar8;
  uint *puVar9;
  ulong uVar10;
  undefined1 *local_58;
  size_t local_50;
  undefined1 local_48 [24];
  
  if ((*(byte *)(param_1 + 200) & 0x20) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/output.cc",0xe99,"do_write");
  }
  if ((*(byte *)(param_1 + 0xca) & 1) == 0) {
    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;
    lVar3 = *(long *)(param_1 + 0x18);
    plVar8 = *(long **)(param_1 + 0xa8);
    if (plVar8 != *(long **)(param_1 + 0xb0)) {
      plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);
      if (plVar7 != (long *)0x0) {
        do {
          (**(code **)(*plVar7 + 0x30))(&local_58,plVar7,plVar8[1]);
          memcpy((void *)(*plVar8 + lVar3 + *(long *)(param_2 + 0x18)),local_58,local_50);
          if (local_58 != local_48) {
            FUN_002a2980();
          }
          plVar8 = plVar8 + 2;
          if (plVar8 == *(long **)(param_1 + 0xb0)) {
            if ((*(byte *)(param_1 + 0x20) & 4) != 0) goto LAB_001eded2;
            goto LAB_001ee02e;
          }
          plVar7 = *(long **)(PTR_DAT_003f85c0 + 0x18);
        } while (plVar7 != (long *)0x0);
      }
LAB_001ee134:
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/parameters.h",0x69,"target");
    }
  }
  else {
    if (*(long *)(param_1 + 0xa8) != *(long *)(param_1 + 0xb0)) {
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/output.cc",0xe9c,"do_write");
    }
    if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;
LAB_001eded2:
    lVar3 = *(long *)(param_1 + 0x18);
  }
  puVar9 = *(uint **)(param_1 + 0x88);
  uVar10 = *(long *)(param_1 + 0xa0) + lVar3;
  if (puVar9 != *(uint **)(param_1 + 0x90)) {
    do {
      if (puVar9[1] == 0) {
        uVar6 = *puVar9;
        if (0xfffffffb < uVar6) {
          pcVar2 = *(code **)(**(long **)(puVar9 + 4) + 0x18);
          if (pcVar2 == FUN_00168610) {
            lVar3 = (*(long **)(puVar9 + 4))[6];
          }
          else {
            lVar3 = (*pcVar2)();
          }
          goto LAB_001edf5a;
        }
      }
      else {
        lVar3 = 1L << ((char)puVar9[1] - 1U & 0x3f);
LAB_001edf5a:
        if (lVar3 == 0) {
          uVar6 = *puVar9;
        }
        else {
          uVar4 = (uVar10 - 1) + lVar3 & -lVar3;
          if (((*(byte *)(param_1 + 0xca) & 1) != 0) && (uVar10 != uVar4)) {
            plVar8 = *(long **)(PTR_DAT_003f85c0 + 0x18);
            if (plVar8 == (long *)0x0) goto LAB_001ee134;
            (**(code **)(*plVar8 + 0x30))(&local_58,plVar8,uVar4 - uVar10);
            memcpy((void *)(*(long *)(param_2 + 0x18) + uVar10),local_58,local_50);
            if (local_58 != local_48) {
              FUN_002a2980();
            }
          }
          uVar6 = *puVar9;
          uVar10 = uVar4;
        }
      }
      if ((uVar6 + 4 < 4) &&
         ((**(code **)(**(long **)(puVar9 + 4) + 0x10))(*(long **)(puVar9 + 4),param_2),
         0xfffffffb < *puVar9)) {
        if ((*(byte *)(*(long *)(puVar9 + 4) + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_001ed720();
        }
        lVar3 = *(long *)(*(long *)(puVar9 + 4) + 0x10);
      }
      else {
        lVar3 = *(long *)(puVar9 + 2);
      }
      uVar10 = uVar10 + lVar3;
      puVar9 = puVar9 + 8;
    } while (*(uint **)(param_1 + 0x90) != puVar9);
  }
  plVar8 = *(long **)(param_1 + 0x130);
  if (plVar8 != (long *)0x0) {
    plVar7 = *(long **)(param_1 + 0xf8);
    if (plVar7 != (long *)(param_1 + 0xf8)) {
      lVar3 = plVar7[2];
      lVar5 = plVar7[3] - lVar3;
      bVar1 = *(byte *)(param_1 + 0x20);
      while ((bVar1 & 4) != 0) {
        (**(code **)(*plVar8 + 0x18))(plVar8,param_2,lVar3 + *(long *)(param_1 + 0x18),lVar5);
        plVar7 = (long *)*plVar7;
        if (plVar7 == (long *)(param_1 + 0xf8)) goto LAB_001ee0f4;
        lVar3 = plVar7[2];
        plVar8 = *(long **)(param_1 + 0x130);
        lVar5 = plVar7[3] - lVar3;
        bVar1 = *(byte *)(param_1 + 0x20);
      }
LAB_001ee02e:
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/output.h",0xe3,"offset");
    }
LAB_001ee0f4:
    if (0 < *(long *)(param_1 + 0x138)) {
      if ((*(byte *)(param_1 + 0x20) & 4) == 0) goto LAB_001ee02e;
      (**(code **)(**(long **)(param_1 + 0x130) + 0x18))
                (*(long **)(param_1 + 0x130),param_2,
                 (*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x138)) +
                 *(long *)(param_1 + 0x18));
    }
  }
  return;
}

