
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: Dwarf_range_list * read_range_list(Dwarf_ranges_table * this, Relobj *
   object, uchar * symtab, off_t symtab_size, uint addr_size, uint ranges_shndx, off_t offset) */

Dwarf_range_list * __thiscall
gold::Dwarf_ranges_table::read_range_list
          (Dwarf_ranges_table *this,Relobj *object,uchar *symtab,off_t symtab_size,uint addr_size,
          uint ranges_shndx,off_t offset)

{
  uchar *puVar1;
  Relobj *pRVar2;
  _func_int_varargs **pp_Var3;
  _func_int_varargs *p_Var4;
  iterator __position;
  pointer pcVar5;
  pointer ppOVar6;
  bool bVar7;
  char cVar8;
  Dwarf_range_list *this_00;
  uint uVar9;
  char *format;
  Valtype return_value;
  uint *puVar11;
  uint uVar12;
  uint local_7c;
  int local_78;
  uint local_5c;
  uint local_58;
  off_t start;
  off_t end;
  Range local_30;
  int iVar10;
  
  bVar7 = read_ranges_table(this,object,symtab,symtab_size,ranges_shndx);
  if (!bVar7) {
    return (Dwarf_range_list *)0x0;
  }
  local_7c = (uint)offset - (int)this->output_section_offset_;
  local_78 = (offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -
             (uint)((uint)offset < (uint)this->output_section_offset_);
  this_00 = (Dwarf_range_list *)operator_new(0xc);
  puVar1 = this->ranges_buffer_;
  (this_00->range_list_).
  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.
  _M_impl._M_start = (pointer)0x0;
  puVar11 = (uint *)(puVar1 + local_7c);
  (this_00->range_list_).
  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.
  _M_impl._M_finish = (pointer)0x0;
  (this_00->range_list_).
  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.
  _M_impl._M_end_of_storage = (pointer)0x0;
  if (puVar11 < this->ranges_buffer_end_) {
    local_5c = 0;
    local_58 = 0;
    do {
      pRVar2 = this->dwinfo_->object_;
      pp_Var3 = (pRVar2->super_Object)._vptr_Object;
      p_Var4 = pp_Var3[3];
      if (addr_size == 4) {
        if (p_Var4 == Relobj::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          cVar8 = (char)iVar10;
        }
        else {
          iVar10 = (*p_Var4)(pRVar2);
          cVar8 = (char)iVar10;
        }
        puVar1 = this->ranges_buffer_;
        start._0_4_ = *puVar11;
        start._4_4_ = 0;
        if (cVar8 != '\0') {
          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |
                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;
        }
        pRVar2 = this->dwinfo_->object_;
        pp_Var3 = (pRVar2->super_Object)._vptr_Object;
        p_Var4 = pp_Var3[3];
        if (p_Var4 == Relobj::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          cVar8 = (char)iVar10;
        }
        else {
          iVar10 = (*p_Var4)(pRVar2);
          cVar8 = (char)iVar10;
        }
        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);
        end._4_4_ = 0;
        if (cVar8 != '\0') {
          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |
                      (uint)end << 0x18;
        }
      }
      else {
        if (p_Var4 == Relobj::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          cVar8 = (char)iVar10;
        }
        else {
          iVar10 = (*p_Var4)(pRVar2);
          cVar8 = (char)iVar10;
        }
        start._0_4_ = *puVar11;
        uVar12 = puVar11[1];
        start._4_4_ = uVar12;
        if (cVar8 != '\0') {
          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |
                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;
          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                        uVar12 << 0x18;
        }
        puVar1 = this->ranges_buffer_;
        pRVar2 = this->dwinfo_->object_;
        pp_Var3 = (pRVar2->super_Object)._vptr_Object;
        p_Var4 = pp_Var3[3];
        if (p_Var4 == Relobj::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          cVar8 = (char)iVar10;
        }
        else {
          iVar10 = (*p_Var4)(pRVar2);
          cVar8 = (char)iVar10;
        }
        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);
        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);
        end._4_4_ = uVar12;
        if (cVar8 != '\0') {
          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |
                      (uint)end << 0x18;
          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                      uVar12 << 0x18;
        }
      }
      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {
        if (start._4_4_ == 0 && (uint)start == 0) {
          if (end._4_4_ == 0 && (uint)end == 0) {
            return this_00;
          }
        }
        else if ((start._4_4_ & (uint)start) == 0xffffffff) {
          local_5c = (uint)end;
          local_58 = end._4_4_;
          goto LAB_00052880;
        }
LAB_0005295f:
        uVar12 = 0;
LAB_00052961:
        local_30.start._0_4_ = (uint)start + local_5c;
        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);
        local_30.end._0_4_ = (uint)end + local_5c;
        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);
        __position._M_current =
             (this_00->range_list_).
             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
             ._M_impl._M_finish;
        local_30.shndx = uVar12;
        if (__position._M_current ==
            (this_00->range_list_).
            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
            ._M_impl._M_end_of_storage) {
          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
          ::_M_realloc_insert<gold::Dwarf_range_list::Range>
                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
                      *)this_00,__position,&local_30);
        }
        else {
          (__position._M_current)->shndx = uVar12;
          *(int *)&(__position._M_current)->start = (int)local_30.start;
          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;
          *(int *)&(__position._M_current)->end = (int)local_30.end;
          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;
          (this_00->range_list_).
          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
          ._M_impl._M_finish = __position._M_current + 1;
        }
      }
      else {
        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);
        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),
                                           addr_size + local_7c),&end);
        if (uVar12 == 0) {
          if (start._4_4_ == 0 && (uint)start == 0) {
            if (end._4_4_ == 0 && (uint)end == 0) {
              return this_00;
            }
LAB_00052b1a:
            if (uVar9 != 0) goto LAB_000529f0;
            goto LAB_0005295f;
          }
          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;
          local_5c = (uint)end;
          local_58 = end._4_4_;
        }
        else {
          if (uVar12 == uVar9) {
            ppOVar6 = (object->output_sections_).
                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                      ._M_impl._M_start;
            if ((uint)((int)(object->output_sections_).
                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {
                    /* WARNING: Subroutine does not return */
              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");
            }
            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;
            goto LAB_00052961;
          }
LAB_000529f0:
          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;
          format = (char *)gettext(
                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"
                                  );
          gold_warning(format,pcVar5);
        }
      }
LAB_00052880:
      bVar7 = CARRY4(local_7c,addr_size * 2);
      local_7c = local_7c + addr_size * 2;
      local_78 = local_78 + (uint)bVar7;
      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);
    } while (puVar11 < this->ranges_buffer_end_);
  }
  return this_00;
}



undefined4 *
FUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
            uint param_6,undefined4 param_7,uint param_8,int param_9)

{
  code *pcVar1;
  int iVar2;
  int *piVar3;
  code *pcVar4;
  undefined4 uVar5;
  char cVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 uVar9;
  uint uVar10;
  uint *puVar11;
  int unaff_EBP;
  int iVar12;
  uint uVar13;
  uint local_5c;
  uint local_58;
  uint local_44;
  uint local_40;
  uint local_3c;
  uint local_38;
  uint local_30;
  uint local_2c;
  uint local_28;
  uint local_24;
  uint local_20;
  
  FUN_0004fb82();
  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);
  if (cVar6 == '\0') {
    return (undefined4 *)0x0;
  }
  uVar10 = param_8 - param_1[7];
  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);
  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);
  iVar2 = param_1[2];
  *puVar7 = 0;
  puVar11 = (uint *)(iVar2 + uVar10);
  puVar7[1] = 0;
  puVar7[2] = 0;
  if (puVar11 < (uint *)param_1[3]) {
    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);
    local_5c = 0;
    local_58 = 0;
    do {
      piVar3 = *(int **)(*param_1 + 8);
      iVar2 = *piVar3;
      pcVar4 = *(code **)(iVar2 + 0xc);
      uVar13 = uVar10;
      if (param_6 == 4) {
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        iVar2 = param_1[2];
        local_44 = *puVar11;
        local_40 = 0;
        if (cVar6 != '\0') {
          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |
                     local_44 << 0x18;
        }
        piVar3 = *(int **)(*param_1 + 8);
        pcVar4 = *(code **)(*piVar3 + 0xc);
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        local_3c = *(uint *)(iVar2 + 4 + uVar10);
        local_38 = 0;
        if (cVar6 != '\0') {
          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |
                     local_3c << 0x18;
        }
      }
      else {
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        local_44 = *puVar11;
        uVar8 = puVar11[1];
        local_40 = uVar8;
        if (cVar6 != '\0') {
          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |
                     local_44 << 0x18;
          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18
          ;
        }
        puVar11 = (uint *)(param_1[2] + 8 + uVar10);
        piVar3 = *(int **)(*param_1 + 8);
        pcVar4 = *(code **)(*piVar3 + 0xc);
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        local_3c = *puVar11;
        uVar10 = puVar11[1];
        local_38 = uVar10;
        if (cVar6 != '\0') {
          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |
                     local_3c << 0x18;
          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |
                     uVar10 << 0x18;
        }
      }
      if (param_1[5] == 0) {
        if (local_40 == 0 && local_44 == 0) {
          if (local_38 == 0 && local_3c == 0) {
            return puVar7;
          }
        }
        else if ((local_40 & local_44) == 0xffffffff) {
          local_5c = local_3c;
          local_58 = local_38;
          goto LAB_00052880;
        }
LAB_0005295f:
        uVar10 = 0;
LAB_00052961:
        local_2c = local_44 + local_5c;
        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);
        local_24 = local_3c + local_5c;
        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);
        puVar11 = (uint *)puVar7[1];
        local_30 = uVar10;
        if (puVar11 == (uint *)puVar7[2]) {
          FUN_00054df0(puVar7,puVar11,&local_30);
        }
        else {
          *puVar11 = uVar10;
          puVar11[1] = local_2c;
          puVar11[2] = local_28;
          puVar11[3] = local_24;
          puVar11[4] = local_20;
          puVar7[1] = puVar11 + 5;
        }
      }
      else {
        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);
        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),
                             &local_3c);
        if (uVar10 == 0) {
          if (local_40 == 0 && local_44 == 0) {
            if (local_38 == 0 && local_3c == 0) {
              return puVar7;
            }
LAB_00052b1a:
            if (uVar8 != 0) goto LAB_000529f0;
            goto LAB_0005295f;
          }
          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;
          local_5c = local_3c;
          local_58 = local_38;
        }
        else {
          if (uVar10 == uVar8) {
            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {
                    /* WARNING: Subroutine does not return */
              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,
                           *(int *)(param_2 + 0x3c));
            }
            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;
            goto LAB_00052961;
          }
LAB_000529f0:
          uVar5 = *(undefined4 *)(param_2 + 4);
          uVar9 = gettext(unaff_EBP + 0x1cde3e);
          FUN_0005ad30(uVar9,uVar5);
        }
      }
LAB_00052880:
      uVar10 = uVar13 + param_6 * 2;
      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);
      puVar11 = (uint *)(param_1[2] + uVar10);
    } while (puVar11 < (uint *)param_1[3]);
  }
  return puVar7;
}


PUSH EBP
CALL 0x0004fb82
ADD EBP,0x2af8da
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x74
MOV EDI,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x20],EBP
MOV EBX,dword ptr [ESP + 0xa4]
MOV ESI,dword ptr [ESP + 0xa8]
PUSH dword ptr [ESP + 0xa0]
PUSH dword ptr [ESP + 0x9c]
PUSH dword ptr [ESP + 0x9c]
PUSH dword ptr [ESP + 0x9c]
PUSH dword ptr [ESP + 0x9c]
PUSH EDI
CALL 0x0004fde0
ADD ESP,0x20
TEST AL,AL
JZ 0x00052ba0
SUB EBX,dword ptr [EDI + 0x1c]
SBB ESI,dword ptr [EDI + 0x20]
SUB ESP,0xc
MOV dword ptr [ESP + 0xc],EBX
MOV EBX,EBP
MOV dword ptr [ESP + 0x10],ESI
PUSH 0xc
CALL 0x0017ebf0
MOV ESI,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [EDI + 0x8]
MOV dword ptr [ESP + 0x38],EAX
ADD ESP,0x10
MOV dword ptr [EAX],0x0
ADD EBX,ESI
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x8],0x0
CMP EBX,dword ptr [EDI + 0xc]
JNC 0x00052ab4
MOV EAX,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x14],0x0
LEA EBP,[EBP + 0xffd35230]
MOV dword ptr [ESP + 0x20],0x0
ADD EAX,EAX
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x4c]
MOV dword ptr [ESP + 0x2c],EAX
LEA EAX,[ESP + 0x38]
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x000528a0
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x8]
PUSH dword ptr [ESP + 0x8]
PUSH EDI
CALL 0x00050290
ADD ESP,0x10
XOR EDX,EDX
MOV ESI,EAX
LEA EAX,[ESP + 0x40]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x98]
ADD EAX,dword ptr [ESP + 0x4]
ADC EDX,dword ptr [ESP + 0x8]
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x00050290
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x000529e8
MOV EBX,dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [ESP + 0x38]
MOV ESI,EBX
OR ESI,ECX
JZ 0x00052b10
MOV EDX,EBX
AND EDX,ECX
CMP EDX,-0x1
JNZ 0x00052b1a
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
NOP
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [EDI + 0x8]
ADD dword ptr [ESP],EAX
MOV ESI,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x14]
ADC dword ptr [ESP + 0x4],EDX
ADD EBX,ESI
CMP EBX,dword ptr [EDI + 0xc]
JNC 0x00052ab4
MOV EAX,dword ptr [EDI]
CMP dword ptr [ESP + 0x94],0x4
MOV EAX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0xc]
JZ 0x00052a30
CMP ECX,EBP
JNZ 0x00052b50
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
MOV ECX,dword ptr [EBX]
MOV EDX,dword ptr [EBX + 0x4]
TEST AL,AL
JZ 0x000528e0
MOV EAX,ECX
MOV ECX,EDX
BSWAP EAX
MOV EDX,EAX
BSWAP ECX
MOV EAX,dword ptr [EDI + 0x8]
MOV dword ptr [ESP + 0x3c],EDX
MOV dword ptr [ESP + 0x38],ECX
LEA EBX,[EAX + ESI*0x1 + 0x8]
MOV EAX,dword ptr [EDI]
MOV EAX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0xc]
CMP ECX,EBP
JNZ 0x00052b40
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
MOV EDX,dword ptr [EBX]
MOV ECX,dword ptr [EBX + 0x4]
TEST AL,AL
JZ 0x00052921
MOV EAX,EDX
MOV EDX,ECX
BSWAP EAX
MOV ECX,EAX
BSWAP EDX
MOV dword ptr [ESP + 0x40],EDX
MOV dword ptr [ESP + 0x44],ECX
MOV EAX,dword ptr [EDI + 0x14]
TEST EAX,EAX
JNZ 0x00052810
MOV EAX,dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,EBX
OR EAX,ECX
MOV dword ptr [ESP + 0xc],EDX
JZ 0x00052aa0
MOV ESI,EBX
AND ESI,ECX
CMP ESI,-0x1
JZ 0x000529d0
XOR ESI,ESI
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x4c],ESI
ADD ECX,EAX
ADC EBX,EDX
MOV dword ptr [ESP + 0x50],ECX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x54],EBX
MOV EBX,EDX
MOV EDX,dword ptr [ESP + 0xc]
ADD EAX,ECX
ADC EDX,EBX
MOV EBX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x58],EAX
MOV dword ptr [ESP + 0x5c],EDX
MOV EAX,dword ptr [EBX + 0x4]
CMP EAX,dword ptr [EBX + 0x8]
JZ 0x00052b80
MOV dword ptr [EAX],ESI
MOV EDX,dword ptr [ESP + 0x50]
ADD EAX,0x14
MOV dword ptr [EAX + -0x10],EDX
MOV EDX,dword ptr [ESP + 0x54]
MOV dword ptr [EAX + -0xc],EDX
MOV EDX,dword ptr [ESP + 0x58]
MOV dword ptr [EAX + -0x8],EDX
MOV EDX,dword ptr [ESP + 0x5c]
MOV dword ptr [EAX + -0x4],EDX
MOV dword ptr [EBX + 0x4],EAX
JMP 0x00052880
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
JMP 0x00052880
CMP ESI,EAX
JZ 0x00052ac0
MOV EAX,dword ptr [ESP + 0x84]
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfff1e564]
PUSH EAX
MOV dword ptr [ESP + 0x28],EBX
CALL 0x000263b0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x0005ad30
ADD ESP,0x10
JMP 0x00052880
CMP ECX,EBP
JNZ 0x00052b70
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
TEST AL,AL
MOV EAX,dword ptr [EDI + 0x8]
MOV EDX,dword ptr [EBX]
MOV dword ptr [ESP + 0x3c],0x0
LEA EBX,[EAX + ESI*0x1 + 0x4]
MOV EAX,dword ptr [EDI]
MOV ECX,EDX
BSWAP ECX
CMOVNZ EDX,ECX
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x38],EDX
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0xc]
CMP ECX,EBP
JNZ 0x00052b60
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
MOV EDX,dword ptr [EBX]
TEST AL,AL
MOV dword ptr [ESP + 0x44],0x0
MOV ECX,EDX
BSWAP ECX
CMOVNZ EDX,ECX
MOV dword ptr [ESP + 0x40],EDX
JMP 0x00052929
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV ESI,EAX
MOV EAX,EDX
OR EAX,ESI
JNZ 0x0005295f
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x84]
MOV EDX,dword ptr [EAX + 0x38]
MOV EAX,dword ptr [EAX + 0x3c]
MOV dword ptr [ESP + 0x8],EAX
SUB EAX,EDX
SAR EAX,0x2
CMP ESI,EAX
JNC 0x00052bb4
MOV EBX,dword ptr [EDX + ESI*0x4]
TEST EBX,EBX
JZ 0x00052880
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDX
JMP 0x00052961
MOV EDX,dword ptr [ESP + 0x44]
OR EDX,dword ptr [ESP + 0x40]
JZ 0x00052ab4
TEST EAX,EAX
JNZ 0x000529f0
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDX
JMP 0x0005295f
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x0005290e
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x000528cd
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x00052a82
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x00052a45
SUB ESP,0x4
PUSH dword ptr [ESP + 0x30]
PUSH EAX
PUSH dword ptr [ESP + 0x34]
CALL 0x00054df0
ADD ESP,0x10
JMP 0x00052880
MOV dword ptr [ESP + 0x28],0x0
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xfff1e788]
PUSH EAX
LEA EAX,[EBX + 0xfff1801a]
PUSH 0x50b
PUSH EAX
CALL 0x0005f0b0
(translation_unit "undefined4 *\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)\n\n{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}\n\n" (function_definition "undefined4 *\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)\n\n{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}" type_identifier (pointer_declarator "*\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" * (function_declarator "FUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" identifier (parameter_list "(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "uint param_8" type_identifier identifier) , (parameter_declaration "int param_9" primitive_type identifier) )))) (compound_statement "{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "FUN_0004fb82();" (call_expression "FUN_0004fb82()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);" (assignment_expression "cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7)" identifier = (call_expression "FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,param_7)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (undefined4 *)0x0;\n  }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar10 = param_8 - param_1[7];" (assignment_expression "uVar10 = param_8 - param_1[7]" identifier = (binary_expression "param_8 - param_1[7]" identifier - (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);" (assignment_expression "iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7])" identifier = (binary_expression "(param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7])" (parenthesized_expression "(param_9 - param_1[8])" ( (binary_expression "param_9 - param_1[8]" identifier - (subscript_expression "param_1[8]" identifier [ number_literal ])) )) - (call_expression "(uint)(param_8 < (uint)param_1[7])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < (uint)param_1[7])" ( (binary_expression "param_8 < (uint)param_1[7]" identifier < (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ))))) ;) (expression_statement "puVar7 = (undefined4 *)FUN_0017ebf0(0xc);" (assignment_expression "puVar7 = (undefined4 *)FUN_0017ebf0(0xc)" identifier = (cast_expression "(undefined4 *)FUN_0017ebf0(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar11 = (uint *)(iVar2 + uVar10);" (assignment_expression "puVar11 = (uint *)(iVar2 + uVar10)" identifier = (cast_expression "(uint *)(iVar2 + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar10)" ( (binary_expression "iVar2 + uVar10" identifier + identifier) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }" if (parenthesized_expression "(puVar11 < (uint *)param_1[3])" ( (binary_expression "puVar11 < (uint *)param_1[3]" identifier < (cast_expression "(uint *)param_1[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) )) (compound_statement "{\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }" { (expression_statement "pcVar1 = (code *)(unaff_EBP + -0x1b4f6);" (assignment_expression "pcVar1 = (code *)(unaff_EBP + -0x1b4f6)" identifier = (cast_expression "(code *)(unaff_EBP + -0x1b4f6)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1b4f6)" ( (binary_expression "unaff_EBP + -0x1b4f6" identifier + number_literal) )))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (do_statement "do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);" do (compound_statement "{\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    }" { (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "pcVar4 = *(code **)(iVar2 + 0xc);" (assignment_expression "pcVar4 = *(code **)(iVar2 + 0xc)" identifier = (pointer_expression "*(code **)(iVar2 + 0xc)" * (cast_expression "(code **)(iVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" identifier = identifier) ;) (if_statement "if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" if (parenthesized_expression "(param_6 == 4)" ( (binary_expression "param_6 == 4" identifier == number_literal) )) (compound_statement "{\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }" { (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(iVar2 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(iVar2 + 0xe8))" ( (pointer_expression "**(code **)(iVar2 + 0xe8)" * (pointer_expression "*(code **)(iVar2 + 0xe8)" * (cast_expression "(code **)(iVar2 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xe8)" ( (binary_expression "iVar2 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_44 = *puVar11;" (assignment_expression "local_44 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }" { (expression_statement "local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;" (assignment_expression "local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" identifier = (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" ( (binary_expression "local_44 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" ( (binary_expression "local_44 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_44 << 0x18" identifier << number_literal))) ;) })) (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar4 = *(code **)(*piVar3 + 0xc);" (assignment_expression "pcVar4 = *(code **)(*piVar3 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar3 + 0xc)" * (cast_expression "(code **)(*piVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(*piVar3 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(*piVar3 + 0xe8))" ( (pointer_expression "**(code **)(*piVar3 + 0xe8)" * (pointer_expression "*(code **)(*piVar3 + 0xe8)" * (cast_expression "(code **)(*piVar3 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xe8)" ( (binary_expression "*piVar3 + 0xe8" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "local_3c = *(uint *)(iVar2 + 4 + uVar10);" (assignment_expression "local_3c = *(uint *)(iVar2 + 4 + uVar10)" identifier = (pointer_expression "*(uint *)(iVar2 + 4 + uVar10)" * (cast_expression "(uint *)(iVar2 + 4 + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4 + uVar10)" ( (binary_expression "iVar2 + 4 + uVar10" (binary_expression "iVar2 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }" { (expression_statement "local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;" (assignment_expression "local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" identifier = (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8" (binary_expression "local_3c >> 0x18" identifier >> number_literal) | (binary_expression "(local_3c & 0xff0000) >> 8" (parenthesized_expression "(local_3c & 0xff0000)" ( (binary_expression "local_3c & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_3c & 0xff00) << 8" (parenthesized_expression "(local_3c & 0xff00)" ( (binary_expression "local_3c & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_3c << 0x18" identifier << number_literal))) ;) })) }) (else_clause "else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" else (compound_statement "{\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" { (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(iVar2 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(iVar2 + 0xe8))" ( (pointer_expression "**(code **)(iVar2 + 0xe8)" * (pointer_expression "*(code **)(iVar2 + 0xe8)" * (cast_expression "(code **)(iVar2 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xe8)" ( (binary_expression "iVar2 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "local_44 = *puVar11;" (assignment_expression "local_44 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar8 = puVar11[1];" (assignment_expression "uVar8 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "local_40 = uVar8;" (assignment_expression "local_40 = uVar8" identifier = identifier) ;) (if_statement "if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }" { (expression_statement "local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;" (assignment_expression "local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" identifier = (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" ( (binary_expression "local_44 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" ( (binary_expression "local_44 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_44 << 0x18" identifier << number_literal))) ;) (expression_statement "local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;" (assignment_expression "local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) })) (expression_statement "puVar11 = (uint *)(param_1[2] + 8 + uVar10);" (assignment_expression "puVar11 = (uint *)(param_1[2] + 8 + uVar10)" identifier = (cast_expression "(uint *)(param_1[2] + 8 + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 8 + uVar10)" ( (binary_expression "param_1[2] + 8 + uVar10" (binary_expression "param_1[2] + 8" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) + identifier) )))) ;) (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar4 = *(code **)(*piVar3 + 0xc);" (assignment_expression "pcVar4 = *(code **)(*piVar3 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar3 + 0xc)" * (cast_expression "(code **)(*piVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(*piVar3 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(*piVar3 + 0xe8))" ( (pointer_expression "**(code **)(*piVar3 + 0xe8)" * (pointer_expression "*(code **)(*piVar3 + 0xe8)" * (cast_expression "(code **)(*piVar3 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xe8)" ( (binary_expression "*piVar3 + 0xe8" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "local_3c = *puVar11;" (assignment_expression "local_3c = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar10 = puVar11[1];" (assignment_expression "uVar10 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "local_38 = uVar10;" (assignment_expression "local_38 = uVar10" identifier = identifier) ;) (if_statement "if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }" { (expression_statement "local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;" (assignment_expression "local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" identifier = (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8" (binary_expression "local_3c >> 0x18" identifier >> number_literal) | (binary_expression "(local_3c & 0xff0000) >> 8" (parenthesized_expression "(local_3c & 0xff0000)" ( (binary_expression "local_3c & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_3c & 0xff00) << 8" (parenthesized_expression "(local_3c & 0xff00)" ( (binary_expression "local_3c & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_3c << 0x18" identifier << number_literal))) ;) (expression_statement "local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;" (assignment_expression "local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) })) }))) (if_statement "if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }" { (if_statement "if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" if (parenthesized_expression "(local_40 == 0 && local_44 == 0)" ( (binary_expression "local_40 == 0 && local_44 == 0" (binary_expression "local_40 == 0" identifier == number_literal) && (binary_expression "local_44 == 0" identifier == number_literal)) )) (compound_statement "{\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }" { (if_statement "if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }" if (parenthesized_expression "(local_38 == 0 && local_3c == 0)" ( (binary_expression "local_38 == 0 && local_3c == 0" (binary_expression "local_38 == 0" identifier == number_literal) && (binary_expression "local_3c == 0" identifier == number_literal)) )) (compound_statement "{\n            return puVar7;\n          }" { (return_statement "return puVar7;" return identifier ;) })) }) (else_clause "else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" else (if_statement "if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" if (parenthesized_expression "((local_40 & local_44) == 0xffffffff)" ( (binary_expression "(local_40 & local_44) == 0xffffffff" (parenthesized_expression "(local_40 & local_44)" ( (binary_expression "local_40 & local_44" identifier & identifier) )) == number_literal) )) (compound_statement "{\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" { (expression_statement "local_5c = local_3c;" (assignment_expression "local_5c = local_3c" identifier = identifier) ;) (expression_statement "local_58 = local_38;" (assignment_expression "local_58 = local_38" identifier = identifier) ;) (goto_statement "goto LAB_00052880;" goto statement_identifier ;) })))) (labeled_statement "LAB_0005295f:\n        uVar10 = 0;" statement_identifier : (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00052961:\n        local_2c = local_44 + local_5c;" statement_identifier : (expression_statement "local_2c = local_44 + local_5c;" (assignment_expression "local_2c = local_44 + local_5c" identifier = (binary_expression "local_44 + local_5c" identifier + identifier)) ;)) (expression_statement "local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);" (assignment_expression "local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c)" identifier = (binary_expression "local_40 + local_58 + (uint)CARRY4(local_44,local_5c)" (binary_expression "local_40 + local_58" identifier + identifier) + (cast_expression "(uint)CARRY4(local_44,local_5c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_44,local_5c)" identifier (argument_list "(local_44,local_5c)" ( identifier , identifier )))))) ;) (expression_statement "local_24 = local_3c + local_5c;" (assignment_expression "local_24 = local_3c + local_5c" identifier = (binary_expression "local_3c + local_5c" identifier + identifier)) ;) (expression_statement "local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);" (assignment_expression "local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c)" identifier = (binary_expression "local_38 + local_58 + (uint)CARRY4(local_3c,local_5c)" (binary_expression "local_38 + local_58" identifier + identifier) + (cast_expression "(uint)CARRY4(local_3c,local_5c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_3c,local_5c)" identifier (argument_list "(local_3c,local_5c)" ( identifier , identifier )))))) ;) (expression_statement "puVar11 = (uint *)puVar7[1];" (assignment_expression "puVar11 = (uint *)puVar7[1]" identifier = (cast_expression "(uint *)puVar7[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "local_30 = uVar10;" (assignment_expression "local_30 = uVar10" identifier = identifier) ;) (if_statement "if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" if (parenthesized_expression "(puVar11 == (uint *)puVar7[2])" ( (binary_expression "puVar11 == (uint *)puVar7[2]" identifier == (cast_expression "(uint *)puVar7[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }" { (expression_statement "FUN_00054df0(puVar7,puVar11,&local_30);" (call_expression "FUN_00054df0(puVar7,puVar11,&local_30)" identifier (argument_list "(puVar7,puVar11,&local_30)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) ))) ;) }) (else_clause "else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" else (compound_statement "{\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" { (expression_statement "*puVar11 = uVar10;" (assignment_expression "*puVar11 = uVar10" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = local_2c;" (assignment_expression "puVar11[1] = local_2c" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = local_28;" (assignment_expression "puVar11[2] = local_28" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[3] = local_24;" (assignment_expression "puVar11[3] = local_24" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[4] = local_20;" (assignment_expression "puVar11[4] = local_20" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[1] = puVar11 + 5;" (assignment_expression "puVar7[1] = puVar11 + 5" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (binary_expression "puVar11 + 5" identifier + number_literal)) ;) }))) }) (else_clause "else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" else (compound_statement "{\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" { (expression_statement "uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);" (assignment_expression "uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44)" identifier = (call_expression "FUN_00050290(param_1,uVar13,iVar12,&local_44)" identifier (argument_list "(param_1,uVar13,iVar12,&local_44)" ( identifier , identifier , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (expression_statement "uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);" (assignment_expression "uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" identifier = (call_expression "FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" identifier (argument_list "(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" ( identifier , (binary_expression "param_6 + uVar13" identifier + identifier) , (binary_expression "iVar12 + (uint)CARRY4(param_6,uVar13)" identifier + (cast_expression "(uint)CARRY4(param_6,uVar13)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(param_6,uVar13)" identifier (argument_list "(param_6,uVar13)" ( identifier , identifier ))))) , (pointer_expression "&local_3c" & identifier) )))) ;) (if_statement "if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }" { (if_statement "if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" if (parenthesized_expression "(local_40 == 0 && local_44 == 0)" ( (binary_expression "local_40 == 0 && local_44 == 0" (binary_expression "local_40 == 0" identifier == number_literal) && (binary_expression "local_44 == 0" identifier == number_literal)) )) (compound_statement "{\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" { (if_statement "if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }" if (parenthesized_expression "(local_38 == 0 && local_3c == 0)" ( (binary_expression "local_38 == 0 && local_3c == 0" (binary_expression "local_38 == 0" identifier == number_literal) && (binary_expression "local_3c == 0" identifier == number_literal)) )) (compound_statement "{\n              return puVar7;\n            }" { (return_statement "return puVar7;" return identifier ;) })) (labeled_statement "LAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;" statement_identifier : (if_statement "if (uVar8 != 0) goto LAB_000529f0;" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000529f0;" goto statement_identifier ;))) (goto_statement "goto LAB_0005295f;" goto statement_identifier ;) })) (if_statement "if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;" if (parenthesized_expression "((local_40 & local_44) != 0xffffffff)" ( (binary_expression "(local_40 & local_44) != 0xffffffff" (parenthesized_expression "(local_40 & local_44)" ( (binary_expression "local_40 & local_44" identifier & identifier) )) != number_literal) )) (goto_statement "goto LAB_00052b1a;" goto statement_identifier ;)) (expression_statement "local_5c = local_3c;" (assignment_expression "local_5c = local_3c" identifier = identifier) ;) (expression_statement "local_58 = local_38;" (assignment_expression "local_58 = local_38" identifier = identifier) ;) }) (else_clause "else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" else (compound_statement "{\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" { (if_statement "if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" if (parenthesized_expression "(uVar10 == uVar8)" ( (binary_expression "uVar10 == uVar8" identifier == identifier) )) (compound_statement "{\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" { (if_statement "if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }" if (parenthesized_expression "((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10)" ( (binary_expression "(uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10" (call_expression "(uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2)" ( (binary_expression "*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2" (binary_expression "*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38)" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x38)" * (cast_expression "(int *)(param_2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }" { comment (expression_statement "FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));" (call_expression "FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c))" identifier (argument_list "(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c))" ( (binary_expression "unaff_EBP + 0x1c78f4" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x1ce062" identifier + number_literal) , identifier , identifier , identifier , (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) ))) ;) })) (if_statement "if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;" if (parenthesized_expression "(*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0)" ( (binary_expression "*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0" (pointer_expression "*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4)" * (cast_expression "(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x38) + uVar10 * 4)" ( (binary_expression "*(int *)(param_2 + 0x38) + uVar10 * 4" (pointer_expression "*(int *)(param_2 + 0x38)" * (cast_expression "(int *)(param_2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) == number_literal) )) (goto_statement "goto LAB_00052880;" goto statement_identifier ;)) (goto_statement "goto LAB_00052961;" goto statement_identifier ;) })) (labeled_statement "LAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);" statement_identifier : (expression_statement "uVar5 = *(undefined4 *)(param_2 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;)) (expression_statement "uVar9 = gettext(unaff_EBP + 0x1cde3e);" (assignment_expression "uVar9 = gettext(unaff_EBP + 0x1cde3e)" identifier = (call_expression "gettext(unaff_EBP + 0x1cde3e)" identifier (argument_list "(unaff_EBP + 0x1cde3e)" ( (binary_expression "unaff_EBP + 0x1cde3e" identifier + number_literal) )))) ;) (expression_statement "FUN_0005ad30(uVar9,uVar5);" (call_expression "FUN_0005ad30(uVar9,uVar5)" identifier (argument_list "(uVar9,uVar5)" ( identifier , identifier ))) ;) }))) }))) (labeled_statement "LAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;" statement_identifier : (expression_statement "uVar10 = uVar13 + param_6 * 2;" (assignment_expression "uVar10 = uVar13 + param_6 * 2" identifier = (binary_expression "uVar13 + param_6 * 2" identifier + (binary_expression "param_6 * 2" identifier * number_literal))) ;)) (expression_statement "iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);" (assignment_expression "iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2)" identifier = (binary_expression "iVar12 + (uint)CARRY4(uVar13,param_6 * 2)" identifier + (cast_expression "(uint)CARRY4(uVar13,param_6 * 2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar13,param_6 * 2)" identifier (argument_list "(uVar13,param_6 * 2)" ( identifier , (binary_expression "param_6 * 2" identifier * number_literal) )))))) ;) (expression_statement "puVar11 = (uint *)(param_1[2] + uVar10);" (assignment_expression "puVar11 = (uint *)(param_1[2] + uVar10)" identifier = (cast_expression "(uint *)(param_1[2] + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + uVar10)" ( (binary_expression "param_1[2] + uVar10" (subscript_expression "param_1[2]" identifier [ number_literal ]) + identifier) )))) ;) }) while (parenthesized_expression "(puVar11 < (uint *)param_1[3])" ( (binary_expression "puVar11 < (uint *)param_1[3]" identifier < (cast_expression "(uint *)param_1[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) )) ;) })) (return_statement "return puVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: Dwarf_range_list * read_range_list(Dwarf_ranges_table * this, Relobj *\n   object, uchar * symtab, off_t symtab_size, uint addr_size, uint ranges_shndx, off_t offset) */\n\nDwarf_range_list * __thiscall\ngold::Dwarf_ranges_table::read_range_list\n          (Dwarf_ranges_table *this,Relobj *object,uchar *symtab,off_t symtab_size,uint addr_size,\n          uint ranges_shndx,off_t offset)\n\n{\n  uchar *puVar1;\n  Relobj *pRVar2;\n  _func_int_varargs **pp_Var3;\n  _func_int_varargs *p_Var4;\n  iterator __position;\n  pointer pcVar5;\n  pointer ppOVar6;\n  bool bVar7;\n  char cVar8;\n  Dwarf_range_list *this_00;\n  uint uVar9;\n  char *format;\n  Valtype return_value;\n  uint *puVar11;\n  uint uVar12;\n  uint local_7c;\n  int local_78;\n  uint local_5c;\n  uint local_58;\n  off_t start;\n  off_t end;\n  Range local_30;\n  int iVar10;\n  \n  bVar7 = read_ranges_table(this,object,symtab,symtab_size,ranges_shndx);\n  if (!bVar7) {\n    return (Dwarf_range_list *)0x0;\n  }\n  local_7c = (uint)offset - (int)this->output_section_offset_;\n  local_78 = (offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -\n             (uint)((uint)offset < (uint)this->output_section_offset_);\n  this_00 = (Dwarf_range_list *)operator_new(0xc);\n  puVar1 = this->ranges_buffer_;\n  (this_00->range_list_).\n  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_start = (pointer)0x0;\n  puVar11 = (uint *)(puVar1 + local_7c);\n  (this_00->range_list_).\n  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_finish = (pointer)0x0;\n  (this_00->range_list_).\n  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_end_of_storage = (pointer)0x0;\n  if (puVar11 < this->ranges_buffer_end_) {\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      pRVar2 = this->dwinfo_->object_;\n      pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n      p_Var4 = pp_Var3[3];\n      if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }\n      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }\nLAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);\n      local_7c = local_7c + addr_size * 2;\n      local_78 = local_78 + (uint)bVar7;\n      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);\n    } while (puVar11 < this->ranges_buffer_end_);\n  }\n  return this_00;\n}\n\n" comment comment comment (ERROR "Dwarf_range_list * __thiscall\ngold::Dwarf_ranges_table::read_range_list\n          (Dwarf_ranges_table *this,Relobj *object,uchar *symtab,off_t symtab_size,uint addr_size,\n          uint ranges_shndx,off_t offset)" (binary_expression "Dwarf_range_list * __thiscall\ngold::Dwarf_ranges_table::read_range_list\n          (Dwarf_ranges_table *this,Relobj *object,uchar *symtab,off_t symtab_size,uint addr_size,\n          uint ranges_shndx,off_t offset)" identifier * (call_expression "__thiscall\ngold::Dwarf_ranges_table::read_range_list\n          (Dwarf_ranges_table *this,Relobj *object,uchar *symtab,off_t symtab_size,uint addr_size,\n          uint ranges_shndx,off_t offset)" identifier (ERROR "gold::Dwarf_ranges_table::read_range_list" identifier : : identifier : : identifier) (argument_list "(Dwarf_ranges_table *this,Relobj *object,uchar *symtab,off_t symtab_size,uint addr_size,\n          uint ranges_shndx,off_t offset)" ( (binary_expression "Dwarf_ranges_table *this" identifier * identifier) , (binary_expression "Relobj *object" identifier * identifier) , (binary_expression "uchar *symtab" identifier * identifier) , (ERROR "off_t" identifier) identifier , (ERROR "uint" identifier) identifier , (ERROR "uint" identifier) identifier , (ERROR "off_t" identifier) identifier ))))) (compound_statement "{\n  uchar *puVar1;\n  Relobj *pRVar2;\n  _func_int_varargs **pp_Var3;\n  _func_int_varargs *p_Var4;\n  iterator __position;\n  pointer pcVar5;\n  pointer ppOVar6;\n  bool bVar7;\n  char cVar8;\n  Dwarf_range_list *this_00;\n  uint uVar9;\n  char *format;\n  Valtype return_value;\n  uint *puVar11;\n  uint uVar12;\n  uint local_7c;\n  int local_78;\n  uint local_5c;\n  uint local_58;\n  off_t start;\n  off_t end;\n  Range local_30;\n  int iVar10;\n  \n  bVar7 = read_ranges_table(this,object,symtab,symtab_size,ranges_shndx);\n  if (!bVar7) {\n    return (Dwarf_range_list *)0x0;\n  }\n  local_7c = (uint)offset - (int)this->output_section_offset_;\n  local_78 = (offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -\n             (uint)((uint)offset < (uint)this->output_section_offset_);\n  this_00 = (Dwarf_range_list *)operator_new(0xc);\n  puVar1 = this->ranges_buffer_;\n  (this_00->range_list_).\n  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_start = (pointer)0x0;\n  puVar11 = (uint *)(puVar1 + local_7c);\n  (this_00->range_list_).\n  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_finish = (pointer)0x0;\n  (this_00->range_list_).\n  super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_end_of_storage = (pointer)0x0;\n  if (puVar11 < this->ranges_buffer_end_) {\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      pRVar2 = this->dwinfo_->object_;\n      pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n      p_Var4 = pp_Var3[3];\n      if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }\n      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }\nLAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);\n      local_7c = local_7c + addr_size * 2;\n      local_78 = local_78 + (uint)bVar7;\n      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);\n    } while (puVar11 < this->ranges_buffer_end_);\n  }\n  return this_00;\n}" { (declaration "uchar *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "Relobj *pRVar2;" type_identifier (pointer_declarator "*pRVar2" * identifier) ;) (declaration "_func_int_varargs **pp_Var3;" type_identifier (pointer_declarator "**pp_Var3" * (pointer_declarator "*pp_Var3" * identifier)) ;) (declaration "_func_int_varargs *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "pointer pcVar5;" type_identifier identifier ;) (declaration "pointer ppOVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "Dwarf_range_list *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "Valtype return_value;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "off_t start;" type_identifier identifier ;) (declaration "off_t end;" type_identifier identifier ;) (declaration "Range local_30;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "bVar7 = read_ranges_table(this,object,symtab,symtab_size,ranges_shndx);" (assignment_expression "bVar7 = read_ranges_table(this,object,symtab,symtab_size,ranges_shndx)" identifier = (call_expression "read_ranges_table(this,object,symtab,symtab_size,ranges_shndx)" identifier (argument_list "(this,object,symtab,symtab_size,ranges_shndx)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (!bVar7) {\n    return (Dwarf_range_list *)0x0;\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    return (Dwarf_range_list *)0x0;\n  }" { (return_statement "return (Dwarf_range_list *)0x0;" return (cast_expression "(Dwarf_range_list *)0x0" ( (type_descriptor "Dwarf_range_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "local_7c = (uint)offset - (int)this->output_section_offset_;" (assignment_expression "local_7c = (uint)offset - (int)this->output_section_offset_" identifier = (binary_expression "(uint)offset - (int)this->output_section_offset_" (cast_expression "(uint)offset" ( (type_descriptor "uint" type_identifier) ) identifier) - (cast_expression "(int)this->output_section_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->output_section_offset_" identifier -> field_identifier)))) ;) (expression_statement "local_78 = (offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -\n             (uint)((uint)offset < (uint)this->output_section_offset_);" (assignment_expression "local_78 = (offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -\n             (uint)((uint)offset < (uint)this->output_section_offset_)" identifier = (binary_expression "(offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -\n             (uint)((uint)offset < (uint)this->output_section_offset_)" (parenthesized_expression "(offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4))" ( (binary_expression "offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)" (field_expression "offset._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)&this->output_section_offset_ + 4)" * (cast_expression "(int *)((int)&this->output_section_offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->output_section_offset_ + 4)" ( (binary_expression "(int)&this->output_section_offset_ + 4" (cast_expression "(int)&this->output_section_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->output_section_offset_" & (field_expression "this->output_section_offset_" identifier -> field_identifier))) + number_literal) ))))) )) - (call_expression "(uint)((uint)offset < (uint)this->output_section_offset_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)offset < (uint)this->output_section_offset_)" ( (binary_expression "(uint)offset < (uint)this->output_section_offset_" (cast_expression "(uint)offset" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)this->output_section_offset_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->output_section_offset_" identifier -> field_identifier))) ))))) ;) (expression_statement "this_00 = (Dwarf_range_list *)operator_new(0xc);" (assignment_expression "this_00 = (Dwarf_range_list *)operator_new(0xc)" identifier = (cast_expression "(Dwarf_range_list *)operator_new(0xc)" ( (type_descriptor "Dwarf_range_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = this->ranges_buffer_;" (assignment_expression "puVar1 = this->ranges_buffer_" identifier = (field_expression "this->ranges_buffer_" identifier -> field_identifier)) ;) (ERROR "(this_00->range_list_).\n  super__Vector_base<gold::" (binary_expression "(this_00->range_list_).\n  super__Vector_base<gold" (field_expression "(this_00->range_list_).\n  super__Vector_base" (parenthesized_expression "(this_00->range_list_)" ( (field_expression "this_00->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_start = (pointer)0x0;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>.\n  _M_impl._M_start = (pointer)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>.\n  _M_impl._M_start = (pointer)0x0;" (assignment_expression "Range>_>.\n  _M_impl._M_start = (pointer)0x0" (field_expression "Range>_>.\n  _M_impl._M_start" (field_expression "Range>_>.\n  _M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;))) (expression_statement "puVar11 = (uint *)(puVar1 + local_7c);" (assignment_expression "puVar11 = (uint *)(puVar1 + local_7c)" identifier = (cast_expression "(uint *)(puVar1 + local_7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + local_7c)" ( (binary_expression "puVar1 + local_7c" identifier + identifier) )))) ;) (ERROR "(this_00->range_list_).\n  super__Vector_base<gold::" (binary_expression "(this_00->range_list_).\n  super__Vector_base<gold" (field_expression "(this_00->range_list_).\n  super__Vector_base" (parenthesized_expression "(this_00->range_list_)" ( (field_expression "this_00->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_finish = (pointer)0x0;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>.\n  _M_impl._M_finish = (pointer)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>.\n  _M_impl._M_finish = (pointer)0x0;" (assignment_expression "Range>_>.\n  _M_impl._M_finish = (pointer)0x0" (field_expression "Range>_>.\n  _M_impl._M_finish" (field_expression "Range>_>.\n  _M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;))) (ERROR "(this_00->range_list_).\n  super__Vector_base<gold::" (binary_expression "(this_00->range_list_).\n  super__Vector_base<gold" (field_expression "(this_00->range_list_).\n  super__Vector_base" (parenthesized_expression "(this_00->range_list_)" ( (field_expression "this_00->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>.\n  _M_impl._M_end_of_storage = (pointer)0x0;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>.\n  _M_impl._M_end_of_storage = (pointer)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>.\n  _M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "Range>_>.\n  _M_impl._M_end_of_storage = (pointer)0x0" (field_expression "Range>_>.\n  _M_impl._M_end_of_storage" (field_expression "Range>_>.\n  _M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;))) (if_statement "if (puVar11 < this->ranges_buffer_end_) {\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      pRVar2 = this->dwinfo_->object_;\n      pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n      p_Var4 = pp_Var3[3];\n      if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }\n      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }\nLAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);\n      local_7c = local_7c + addr_size * 2;\n      local_78 = local_78 + (uint)bVar7;\n      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);\n    } while (puVar11 < this->ranges_buffer_end_);\n  }" if (parenthesized_expression "(puVar11 < this->ranges_buffer_end_)" ( (binary_expression "puVar11 < this->ranges_buffer_end_" identifier < (field_expression "this->ranges_buffer_end_" identifier -> field_identifier)) )) (compound_statement "{\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      pRVar2 = this->dwinfo_->object_;\n      pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n      p_Var4 = pp_Var3[3];\n      if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }\n      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }\nLAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);\n      local_7c = local_7c + addr_size * 2;\n      local_78 = local_78 + (uint)bVar7;\n      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);\n    } while (puVar11 < this->ranges_buffer_end_);\n  }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (do_statement "do {\n      pRVar2 = this->dwinfo_->object_;\n      pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n      p_Var4 = pp_Var3[3];\n      if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }\n      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }\nLAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);\n      local_7c = local_7c + addr_size * 2;\n      local_78 = local_78 + (uint)bVar7;\n      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);\n    } while (puVar11 < this->ranges_buffer_end_);" do (compound_statement "{\n      pRVar2 = this->dwinfo_->object_;\n      pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n      p_Var4 = pp_Var3[3];\n      if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }\n      if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }\nLAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);\n      local_7c = local_7c + addr_size * 2;\n      local_78 = local_78 + (uint)bVar7;\n      puVar11 = (uint *)(this->ranges_buffer_ + local_7c);\n    }" { (expression_statement "pRVar2 = this->dwinfo_->object_;" (assignment_expression "pRVar2 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var3 = (pRVar2->super_Object)._vptr_Object;" (assignment_expression "pp_Var3 = (pRVar2->super_Object)._vptr_Object" identifier = (field_expression "(pRVar2->super_Object)._vptr_Object" (parenthesized_expression "(pRVar2->super_Object)" ( (field_expression "pRVar2->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var4 = pp_Var3[3];" (assignment_expression "p_Var4 = pp_Var3[3]" identifier = (subscript_expression "pp_Var3[3]" identifier [ number_literal ])) ;) (if_statement "if (addr_size == 4) {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }\n      else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }" if (parenthesized_expression "(addr_size == 4)" ( (binary_expression "addr_size == 4" identifier == number_literal) )) (compound_statement "{\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        puVar1 = this->ranges_buffer_;\n        start._0_4_ = *puVar11;\n        start._4_4_ = 0;\n        if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 4);\n        end._4_4_ = 0;\n        if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }\n      }" { (if_statement "if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" if (parenthesized_expression "(p_Var4 == Relobj::is_big_endian)" ( (binary_expression "p_Var4 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*pp_Var3[0x3a])(pRVar2);" (assignment_expression "iVar10 = (*pp_Var3[0x3a])(pRVar2)" identifier = (call_expression "(*pp_Var3[0x3a])(pRVar2)" (parenthesized_expression "(*pp_Var3[0x3a])" ( (pointer_expression "*pp_Var3[0x3a]" * (subscript_expression "pp_Var3[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" else (compound_statement "{\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*p_Var4)(pRVar2);" (assignment_expression "iVar10 = (*p_Var4)(pRVar2)" identifier = (call_expression "(*p_Var4)(pRVar2)" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "puVar1 = this->ranges_buffer_;" (assignment_expression "puVar1 = this->ranges_buffer_" identifier = (field_expression "this->ranges_buffer_" identifier -> field_identifier)) ;) (expression_statement "start._0_4_ = *puVar11;" (assignment_expression "start._0_4_ = *puVar11" (field_expression "start._0_4_" identifier . field_identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "start._4_4_ = 0;" (assignment_expression "start._4_4_ = 0" (field_expression "start._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (cVar8 != '\0') {\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n        }" { (expression_statement "start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;" (assignment_expression "start._0_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18" (field_expression "start._0_4_" identifier . field_identifier) = (binary_expression "(uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18" (binary_expression "(uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8" (binary_expression "(uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8" (binary_expression "(uint)start >> 0x18" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)start & 0xff0000) >> 8" (parenthesized_expression "((uint)start & 0xff0000)" ( (binary_expression "(uint)start & 0xff0000" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)start & 0xff00) << 8" (parenthesized_expression "((uint)start & 0xff00)" ( (binary_expression "(uint)start & 0xff00" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(uint)start << 0x18" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) })) (expression_statement "pRVar2 = this->dwinfo_->object_;" (assignment_expression "pRVar2 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var3 = (pRVar2->super_Object)._vptr_Object;" (assignment_expression "pp_Var3 = (pRVar2->super_Object)._vptr_Object" identifier = (field_expression "(pRVar2->super_Object)._vptr_Object" (parenthesized_expression "(pRVar2->super_Object)" ( (field_expression "pRVar2->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var4 = pp_Var3[3];" (assignment_expression "p_Var4 = pp_Var3[3]" identifier = (subscript_expression "pp_Var3[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" if (parenthesized_expression "(p_Var4 == Relobj::is_big_endian)" ( (binary_expression "p_Var4 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*pp_Var3[0x3a])(pRVar2);" (assignment_expression "iVar10 = (*pp_Var3[0x3a])(pRVar2)" identifier = (call_expression "(*pp_Var3[0x3a])(pRVar2)" (parenthesized_expression "(*pp_Var3[0x3a])" ( (pointer_expression "*pp_Var3[0x3a]" * (subscript_expression "pp_Var3[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" else (compound_statement "{\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*p_Var4)(pRVar2);" (assignment_expression "iVar10 = (*p_Var4)(pRVar2)" identifier = (call_expression "(*p_Var4)(pRVar2)" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "end._0_4_ = *(uint *)(puVar1 + local_7c + 4);" (assignment_expression "end._0_4_ = *(uint *)(puVar1 + local_7c + 4)" (field_expression "end._0_4_" identifier . field_identifier) = (pointer_expression "*(uint *)(puVar1 + local_7c + 4)" * (cast_expression "(uint *)(puVar1 + local_7c + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + local_7c + 4)" ( (binary_expression "puVar1 + local_7c + 4" (binary_expression "puVar1 + local_7c" identifier + identifier) + number_literal) ))))) ;) (expression_statement "end._4_4_ = 0;" (assignment_expression "end._4_4_ = 0" (field_expression "end._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (cVar8 != '\0') {\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n        }" { (expression_statement "end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;" (assignment_expression "end._0_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18" (field_expression "end._0_4_" identifier . field_identifier) = (binary_expression "(uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18" (binary_expression "(uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8" (binary_expression "(uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8" (binary_expression "(uint)end >> 0x18" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)end & 0xff0000) >> 8" (parenthesized_expression "((uint)end & 0xff0000)" ( (binary_expression "(uint)end & 0xff0000" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)end & 0xff00) << 8" (parenthesized_expression "((uint)end & 0xff00)" ( (binary_expression "(uint)end & 0xff00" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(uint)end << 0x18" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) })) }) (else_clause "else {\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }" else (compound_statement "{\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        start._0_4_ = *puVar11;\n        uVar12 = puVar11[1];\n        start._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }\n        puVar1 = this->ranges_buffer_;\n        pRVar2 = this->dwinfo_->object_;\n        pp_Var3 = (pRVar2->super_Object)._vptr_Object;\n        p_Var4 = pp_Var3[3];\n        if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        end._0_4_ = *(uint *)(puVar1 + local_7c + 8);\n        uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);\n        end._4_4_ = uVar12;\n        if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }\n      }" { (if_statement "if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" if (parenthesized_expression "(p_Var4 == Relobj::is_big_endian)" ( (binary_expression "p_Var4 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*pp_Var3[0x3a])(pRVar2);" (assignment_expression "iVar10 = (*pp_Var3[0x3a])(pRVar2)" identifier = (call_expression "(*pp_Var3[0x3a])(pRVar2)" (parenthesized_expression "(*pp_Var3[0x3a])" ( (pointer_expression "*pp_Var3[0x3a]" * (subscript_expression "pp_Var3[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" else (compound_statement "{\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*p_Var4)(pRVar2);" (assignment_expression "iVar10 = (*p_Var4)(pRVar2)" identifier = (call_expression "(*p_Var4)(pRVar2)" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "start._0_4_ = *puVar11;" (assignment_expression "start._0_4_ = *puVar11" (field_expression "start._0_4_" identifier . field_identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar12 = puVar11[1];" (assignment_expression "uVar12 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "start._4_4_ = uVar12;" (assignment_expression "start._4_4_ = uVar12" (field_expression "start._4_4_" identifier . field_identifier) = identifier) ;) (if_statement "if (cVar8 != '\0') {\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;\n          start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;\n        }" { (expression_statement "start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18;" (assignment_expression "start._4_4_ = (uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18" (field_expression "start._4_4_" identifier . field_identifier) = (binary_expression "(uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8 | (uint)start << 0x18" (binary_expression "(uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8 |\n                        ((uint)start & 0xff00) << 8" (binary_expression "(uint)start >> 0x18 | ((uint)start & 0xff0000) >> 8" (binary_expression "(uint)start >> 0x18" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)start & 0xff0000) >> 8" (parenthesized_expression "((uint)start & 0xff0000)" ( (binary_expression "(uint)start & 0xff0000" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)start & 0xff00) << 8" (parenthesized_expression "((uint)start & 0xff00)" ( (binary_expression "(uint)start & 0xff00" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(uint)start << 0x18" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18;" (assignment_expression "start._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18" (field_expression "start._0_4_" identifier . field_identifier) = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                        uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) })) (expression_statement "puVar1 = this->ranges_buffer_;" (assignment_expression "puVar1 = this->ranges_buffer_" identifier = (field_expression "this->ranges_buffer_" identifier -> field_identifier)) ;) (expression_statement "pRVar2 = this->dwinfo_->object_;" (assignment_expression "pRVar2 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var3 = (pRVar2->super_Object)._vptr_Object;" (assignment_expression "pp_Var3 = (pRVar2->super_Object)._vptr_Object" identifier = (field_expression "(pRVar2->super_Object)._vptr_Object" (parenthesized_expression "(pRVar2->super_Object)" ( (field_expression "pRVar2->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var4 = pp_Var3[3];" (assignment_expression "p_Var4 = pp_Var3[3]" identifier = (subscript_expression "pp_Var3[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var4 == Relobj::is_big_endian) {\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }\n        else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" if (parenthesized_expression "(p_Var4 == Relobj::is_big_endian)" ( (binary_expression "p_Var4 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n          iVar10 = (*pp_Var3[0x3a])(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*pp_Var3[0x3a])(pRVar2);" (assignment_expression "iVar10 = (*pp_Var3[0x3a])(pRVar2)" identifier = (call_expression "(*pp_Var3[0x3a])(pRVar2)" (parenthesized_expression "(*pp_Var3[0x3a])" ( (pointer_expression "*pp_Var3[0x3a]" * (subscript_expression "pp_Var3[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" else (compound_statement "{\n          iVar10 = (*p_Var4)(pRVar2);\n          cVar8 = (char)iVar10;\n        }" { (expression_statement "iVar10 = (*p_Var4)(pRVar2);" (assignment_expression "iVar10 = (*p_Var4)(pRVar2)" identifier = (call_expression "(*p_Var4)(pRVar2)" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pRVar2)" ( identifier )))) ;) (expression_statement "cVar8 = (char)iVar10;" (assignment_expression "cVar8 = (char)iVar10" identifier = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "end._0_4_ = *(uint *)(puVar1 + local_7c + 8);" (assignment_expression "end._0_4_ = *(uint *)(puVar1 + local_7c + 8)" (field_expression "end._0_4_" identifier . field_identifier) = (pointer_expression "*(uint *)(puVar1 + local_7c + 8)" * (cast_expression "(uint *)(puVar1 + local_7c + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + local_7c + 8)" ( (binary_expression "puVar1 + local_7c + 8" (binary_expression "puVar1 + local_7c" identifier + identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4);" (assignment_expression "uVar12 = *(uint *)((int)(puVar1 + local_7c + 8) + 4)" identifier = (pointer_expression "*(uint *)((int)(puVar1 + local_7c + 8) + 4)" * (cast_expression "(uint *)((int)(puVar1 + local_7c + 8) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(puVar1 + local_7c + 8) + 4)" ( (binary_expression "(int)(puVar1 + local_7c + 8) + 4" (cast_expression "(int)(puVar1 + local_7c + 8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar1 + local_7c + 8)" ( (binary_expression "puVar1 + local_7c + 8" (binary_expression "puVar1 + local_7c" identifier + identifier) + number_literal) ))) + number_literal) ))))) ;) (expression_statement "end._4_4_ = uVar12;" (assignment_expression "end._4_4_ = uVar12" (field_expression "end._4_4_" identifier . field_identifier) = identifier) ;) (if_statement "if (cVar8 != '\0') {\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;\n          end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;\n        }" { (expression_statement "end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18;" (assignment_expression "end._4_4_ = (uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18" (field_expression "end._4_4_" identifier . field_identifier) = (binary_expression "(uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8 |\n                      (uint)end << 0x18" (binary_expression "(uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8 | ((uint)end & 0xff00) << 8" (binary_expression "(uint)end >> 0x18 | ((uint)end & 0xff0000) >> 8" (binary_expression "(uint)end >> 0x18" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)end & 0xff0000) >> 8" (parenthesized_expression "((uint)end & 0xff0000)" ( (binary_expression "(uint)end & 0xff0000" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)end & 0xff00) << 8" (parenthesized_expression "((uint)end & 0xff00)" ( (binary_expression "(uint)end & 0xff00" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(uint)end << 0x18" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18;" (assignment_expression "end._0_4_ = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18" (field_expression "end._0_4_" identifier . field_identifier) = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                      uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) })) }))) (if_statement "if (this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0) {\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }" if (parenthesized_expression "(this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0)" ( (binary_expression "this->ranges_reloc_mapper_ == (Elf_reloc_mapper *)0x0" (field_expression "this->ranges_reloc_mapper_" identifier -> field_identifier) == (cast_expression "(Elf_reloc_mapper *)0x0" ( (type_descriptor "Elf_reloc_mapper *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar12 = 0;\nLAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;\n        local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);\n        local_30.end._0_4_ = (uint)end + local_5c;\n        local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);\n        __position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;\n        local_30.shndx = uVar12;\n        if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }\n      }" { (if_statement "if (start._4_4_ == 0 && (uint)start == 0) {\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }\n        else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }" if (parenthesized_expression "(start._4_4_ == 0 && (uint)start == 0)" ( (binary_expression "start._4_4_ == 0 && (uint)start == 0" (binary_expression "start._4_4_ == 0" (field_expression "start._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)start == 0" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) )) (compound_statement "{\n          if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }\n        }" { (if_statement "if (end._4_4_ == 0 && (uint)end == 0) {\n            return this_00;\n          }" if (parenthesized_expression "(end._4_4_ == 0 && (uint)end == 0)" ( (binary_expression "end._4_4_ == 0 && (uint)end == 0" (binary_expression "end._4_4_ == 0" (field_expression "end._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)end == 0" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) )) (compound_statement "{\n            return this_00;\n          }" { (return_statement "return this_00;" return identifier ;) })) }) (else_clause "else if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }" else (if_statement "if ((start._4_4_ & (uint)start) == 0xffffffff) {\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }" if (parenthesized_expression "((start._4_4_ & (uint)start) == 0xffffffff)" ( (binary_expression "(start._4_4_ & (uint)start) == 0xffffffff" (parenthesized_expression "(start._4_4_ & (uint)start)" ( (binary_expression "start._4_4_ & (uint)start" (field_expression "start._4_4_" identifier . field_identifier) & (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier)) )) == number_literal) )) (compound_statement "{\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n          goto LAB_00052880;\n        }" { (expression_statement "local_5c = (uint)end;" (assignment_expression "local_5c = (uint)end" identifier = (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_58 = end._4_4_;" (assignment_expression "local_58 = end._4_4_" identifier = (field_expression "end._4_4_" identifier . field_identifier)) ;) (goto_statement "goto LAB_00052880;" goto statement_identifier ;) })))) (labeled_statement "LAB_0005295f:\n        uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00052961:\n        local_30.start._0_4_ = (uint)start + local_5c;" statement_identifier : (expression_statement "local_30.start._0_4_ = (uint)start + local_5c;" (assignment_expression "local_30.start._0_4_ = (uint)start + local_5c" (field_expression "local_30.start._0_4_" (field_expression "local_30.start" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)start + local_5c" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier)) ;)) (expression_statement "local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c);" (assignment_expression "local_30.start._4_4_ = start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c)" (field_expression "local_30.start._4_4_" (field_expression "local_30.start" identifier . field_identifier) . field_identifier) = (binary_expression "start._4_4_ + local_58 + (uint)CARRY4((uint)start,local_5c)" (binary_expression "start._4_4_ + local_58" (field_expression "start._4_4_" identifier . field_identifier) + identifier) + (cast_expression "(uint)CARRY4((uint)start,local_5c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start,local_5c)" identifier (argument_list "((uint)start,local_5c)" ( (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier )))))) ;) (expression_statement "local_30.end._0_4_ = (uint)end + local_5c;" (assignment_expression "local_30.end._0_4_ = (uint)end + local_5c" (field_expression "local_30.end._0_4_" (field_expression "local_30.end" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)end + local_5c" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier)) ;) (expression_statement "local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c);" (assignment_expression "local_30.end._4_4_ = end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c)" (field_expression "local_30.end._4_4_" (field_expression "local_30.end" identifier . field_identifier) . field_identifier) = (binary_expression "end._4_4_ + local_58 + (uint)CARRY4((uint)end,local_5c)" (binary_expression "end._4_4_ + local_58" (field_expression "end._4_4_" identifier . field_identifier) + identifier) + (cast_expression "(uint)CARRY4((uint)end,local_5c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)end,local_5c)" identifier (argument_list "((uint)end,local_5c)" ( (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier )))))) ;) (ERROR "__position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::" (comma_expression "__position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold::Dwarf_range_list::Range,_std" (assignment_expression "__position._M_current =\n             (this_00->range_list_).\n             super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this_00->range_list_).\n             super__Vector_base<gold" (field_expression "(this_00->range_list_).\n             super__Vector_base" (parenthesized_expression "(this_00->range_list_)" ( (field_expression "this_00->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Dwarf_range_list::Range" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (labeled_statement "Dwarf_range_list::Range>_>\n             ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n             ._M_impl._M_finish;" (field_expression "Range>_>\n             ._M_impl._M_finish" (field_expression "Range>_>\n             ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;)) (expression_statement "local_30.shndx = uVar12;" (assignment_expression "local_30.shndx = uVar12" (field_expression "local_30.shndx" identifier . field_identifier) = identifier) ;) (if_statement "if (__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage) {\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }\n        else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }" if (parenthesized_expression "(__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n            ._M_impl._M_end_of_storage)" ( (ERROR "__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::" (comma_expression "__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold::Dwarf_range_list::Range,_std" (binary_expression "__position._M_current ==\n            (this_00->range_list_).\n            super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(this_00->range_list_).\n            super__Vector_base<gold" (field_expression "(this_00->range_list_).\n            super__Vector_base" (parenthesized_expression "(this_00->range_list_)" ( (field_expression "this_00->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Dwarf_range_list::Range" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Range>_>\n            ._M_impl._M_end_of_storage" (field_expression "Range>_>\n            ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n          std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);\n        }" { (labeled_statement "std::vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);" statement_identifier (ERROR "::vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n          ::_M_realloc_insert<gold::Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);" statement_identifier (ERROR "::Range>_>\n          ::_M_realloc_insert<gold:" : : (binary_expression "Range>_" identifier > identifier) > : : (binary_expression "_M_realloc_insert<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>\n                    ((vector<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);" statement_identifier (ERROR "::Range>\n                    ((vector<gold:" : : identifier > ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n                      *)this_00,__position,&local_30);" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n                      *)this_00,__position,&local_30);" (comma_expression "Range>_>\n                      *)this_00,__position,&local_30" (binary_expression "Range>_>\n                      *)this_00" (binary_expression "Range>_" identifier > identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , (comma_expression "__position,&local_30" identifier , (pointer_expression "&local_30" & identifier))) (ERROR ")" )) ;))))))) }) (else_clause "else {\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }" else (compound_statement "{\n          (__position._M_current)->shndx = uVar12;\n          *(int *)&(__position._M_current)->start = (int)local_30.start;\n          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;\n          *(int *)&(__position._M_current)->end = (int)local_30.end;\n          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;\n          (this_00->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;\n        }" { (expression_statement "(__position._M_current)->shndx = uVar12;" (assignment_expression "(__position._M_current)->shndx = uVar12" (field_expression "(__position._M_current)->shndx" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (expression_statement "*(int *)&(__position._M_current)->start = (int)local_30.start;" (assignment_expression "*(int *)&(__position._M_current)->start = (int)local_30.start" (pointer_expression "*(int *)&(__position._M_current)->start" * (cast_expression "(int *)&(__position._M_current)->start" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->start" & (field_expression "(__position._M_current)->start" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (cast_expression "(int)local_30.start" ( (type_descriptor "int" primitive_type) ) (field_expression "local_30.start" identifier . field_identifier))) ;) (expression_statement "*(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;" (assignment_expression "*(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_" (pointer_expression "*(int *)((int)&(__position._M_current)->start + 4)" * (cast_expression "(int *)((int)&(__position._M_current)->start + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->start + 4)" ( (binary_expression "(int)&(__position._M_current)->start + 4" (cast_expression "(int)&(__position._M_current)->start" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__position._M_current)->start" & (field_expression "(__position._M_current)->start" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) + number_literal) )))) = (field_expression "local_30.start._4_4_" (field_expression "local_30.start" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*(int *)&(__position._M_current)->end = (int)local_30.end;" (assignment_expression "*(int *)&(__position._M_current)->end = (int)local_30.end" (pointer_expression "*(int *)&(__position._M_current)->end" * (cast_expression "(int *)&(__position._M_current)->end" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->end" & (field_expression "(__position._M_current)->end" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (cast_expression "(int)local_30.end" ( (type_descriptor "int" primitive_type) ) (field_expression "local_30.end" identifier . field_identifier))) ;) (expression_statement "*(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;" (assignment_expression "*(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_" (pointer_expression "*(int *)((int)&(__position._M_current)->end + 4)" * (cast_expression "(int *)((int)&(__position._M_current)->end + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->end + 4)" ( (binary_expression "(int)&(__position._M_current)->end + 4" (cast_expression "(int)&(__position._M_current)->end" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__position._M_current)->end" & (field_expression "(__position._M_current)->end" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) + number_literal) )))) = (field_expression "local_30.end._4_4_" (field_expression "local_30.end" identifier . field_identifier) . field_identifier)) ;) (ERROR "(this_00->range_list_).\n          super__Vector_base<gold::" (binary_expression "(this_00->range_list_).\n          super__Vector_base<gold" (field_expression "(this_00->range_list_).\n          super__Vector_base" (parenthesized_expression "(this_00->range_list_)" ( (field_expression "this_00->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n          ._M_impl._M_finish = __position._M_current + 1;" (assignment_expression "Range>_>\n          ._M_impl._M_finish = __position._M_current + 1" (field_expression "Range>_>\n          ._M_impl._M_finish" (field_expression "Range>_>\n          ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;))) }))) }) (else_clause "else {\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }" else (compound_statement "{\n        uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);\n        uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);\n        if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }\n      }" { (expression_statement "uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start);" (assignment_expression "uVar12 = lookup_reloc(this,CONCAT44(local_78,local_7c),&start)" identifier = (call_expression "lookup_reloc(this,CONCAT44(local_78,local_7c),&start)" identifier (argument_list "(this,CONCAT44(local_78,local_7c),&start)" ( identifier , (call_expression "CONCAT44(local_78,local_7c)" identifier (argument_list "(local_78,local_7c)" ( identifier , identifier ))) , (pointer_expression "&start" & identifier) )))) ;) (expression_statement "uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end);" (assignment_expression "uVar9 = lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end)" identifier = (call_expression "lookup_reloc(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end)" identifier (argument_list "(this,CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c),&end)" ( identifier , (call_expression "CONCAT44(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c)" identifier (argument_list "(local_78 + (uint)CARRY4(addr_size,local_7c),\n                                           addr_size + local_7c)" ( (binary_expression "local_78 + (uint)CARRY4(addr_size,local_7c)" identifier + (cast_expression "(uint)CARRY4(addr_size,local_7c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(addr_size,local_7c)" identifier (argument_list "(addr_size,local_7c)" ( identifier , identifier ))))) , (binary_expression "addr_size + local_7c" identifier + identifier) ))) , (pointer_expression "&end" & identifier) )))) ;) (if_statement "if (uVar12 == 0) {\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }\n        else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = (uint)end;\n          local_58 = end._4_4_;\n        }" { (if_statement "if (start._4_4_ == 0 && (uint)start == 0) {\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" if (parenthesized_expression "(start._4_4_ == 0 && (uint)start == 0)" ( (binary_expression "start._4_4_ == 0 && (uint)start == 0" (binary_expression "start._4_4_ == 0" (field_expression "start._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)start == 0" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) )) (compound_statement "{\n            if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }\nLAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" { (if_statement "if (end._4_4_ == 0 && (uint)end == 0) {\n              return this_00;\n            }" if (parenthesized_expression "(end._4_4_ == 0 && (uint)end == 0)" ( (binary_expression "end._4_4_ == 0 && (uint)end == 0" (binary_expression "end._4_4_ == 0" (field_expression "end._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)end == 0" (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) )) (compound_statement "{\n              return this_00;\n            }" { (return_statement "return this_00;" return identifier ;) })) (labeled_statement "LAB_00052b1a:\n            if (uVar9 != 0) goto LAB_000529f0;" statement_identifier : (if_statement "if (uVar9 != 0) goto LAB_000529f0;" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000529f0;" goto statement_identifier ;))) (goto_statement "goto LAB_0005295f;" goto statement_identifier ;) })) (if_statement "if ((start._4_4_ & (uint)start) != 0xffffffff) goto LAB_00052b1a;" if (parenthesized_expression "((start._4_4_ & (uint)start) != 0xffffffff)" ( (binary_expression "(start._4_4_ & (uint)start) != 0xffffffff" (parenthesized_expression "(start._4_4_ & (uint)start)" ( (binary_expression "start._4_4_ & (uint)start" (field_expression "start._4_4_" identifier . field_identifier) & (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (goto_statement "goto LAB_00052b1a;" goto statement_identifier ;)) (expression_statement "local_5c = (uint)end;" (assignment_expression "local_5c = (uint)end" identifier = (cast_expression "(uint)end" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_58 = end._4_4_;" (assignment_expression "local_58 = end._4_4_" identifier = (field_expression "end._4_4_" identifier . field_identifier)) ;) }) (else_clause "else {\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }" else (compound_statement "{\n          if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;\n          format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );\n          gold_warning(format,pcVar5);\n        }" { (if_statement "if (uVar12 == uVar9) {\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" if (parenthesized_expression "(uVar12 == uVar9)" ( (binary_expression "uVar12 == uVar9" identifier == identifier) )) (compound_statement "{\n            ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;\n            if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }\n            if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" { (expression_statement "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start;" (field_expression "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start" (field_expression "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl" (binary_expression "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar6 = (object->output_sections_).\n                      super__Vector_base<gold" identifier = (binary_expression "(object->output_sections_).\n                      super__Vector_base<gold" (field_expression "(object->output_sections_).\n                      super__Vector_base" (parenthesized_expression "(object->output_sections_)" ( (field_expression "object->output_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }" if (parenthesized_expression "((uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12)" ( (binary_expression "(uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= uVar12" (call_expression "(uint)((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2)" ( (binary_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6 >> 2" (binary_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish - (int)ppOVar6" (field_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl._M_finish" (field_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                            ._M_impl" (binary_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold::Output_section*,_std" (binary_expression "(int)(object->output_sections_).\n                            super__Vector_base<gold" (cast_expression "(int)(object->output_sections_).\n                            super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(object->output_sections_).\n                            super__Vector_base" (parenthesized_expression "(object->output_sections_)" ( (field_expression "object->output_sections_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)ppOVar6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");\n            }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included");" (call_expression "do_gold_unreachable("../../gold/object.h",0x50b,"is_section_included")" identifier (argument_list "("../../gold/object.h",0x50b,"is_section_included")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""is_section_included"" " string_content ") ))) ;) })) (if_statement "if (ppOVar6[uVar12] == (Output_section *)0x0) goto LAB_00052880;" if (parenthesized_expression "(ppOVar6[uVar12] == (Output_section *)0x0)" ( (binary_expression "ppOVar6[uVar12] == (Output_section *)0x0" (subscript_expression "ppOVar6[uVar12]" identifier [ identifier ]) == (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00052880;" goto statement_identifier ;)) (goto_statement "goto LAB_00052961;" goto statement_identifier ;) })) (labeled_statement "LAB_000529f0:\n          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;" statement_identifier : (expression_statement "pcVar5 = (object->super_Object).name_._M_dataplus._M_p;" (assignment_expression "pcVar5 = (object->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(object->super_Object).name_._M_dataplus._M_p" (field_expression "(object->super_Object).name_._M_dataplus" (field_expression "(object->super_Object).name_" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;)) (expression_statement "format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  );" (assignment_expression "format = (char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  )" identifier = (cast_expression "(char *)gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  )" identifier (argument_list "(\n                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"\n                                  )" ( (string_literal ""%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"" " string_content ") ))))) ;) (expression_statement "gold_warning(format,pcVar5);" (call_expression "gold_warning(format,pcVar5)" identifier (argument_list "(format,pcVar5)" ( identifier , identifier ))) ;) }))) }))) (labeled_statement "LAB_00052880:\n      bVar7 = CARRY4(local_7c,addr_size * 2);" statement_identifier : (expression_statement "bVar7 = CARRY4(local_7c,addr_size * 2);" (assignment_expression "bVar7 = CARRY4(local_7c,addr_size * 2)" identifier = (call_expression "CARRY4(local_7c,addr_size * 2)" identifier (argument_list "(local_7c,addr_size * 2)" ( identifier , (binary_expression "addr_size * 2" identifier * number_literal) )))) ;)) (expression_statement "local_7c = local_7c + addr_size * 2;" (assignment_expression "local_7c = local_7c + addr_size * 2" identifier = (binary_expression "local_7c + addr_size * 2" identifier + (binary_expression "addr_size * 2" identifier * number_literal))) ;) (expression_statement "local_78 = local_78 + (uint)bVar7;" (assignment_expression "local_78 = local_78 + (uint)bVar7" identifier = (binary_expression "local_78 + (uint)bVar7" identifier + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar11 = (uint *)(this->ranges_buffer_ + local_7c);" (assignment_expression "puVar11 = (uint *)(this->ranges_buffer_ + local_7c)" identifier = (cast_expression "(uint *)(this->ranges_buffer_ + local_7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this->ranges_buffer_ + local_7c)" ( (binary_expression "this->ranges_buffer_ + local_7c" (field_expression "this->ranges_buffer_" identifier -> field_identifier) + identifier) )))) ;) }) while (parenthesized_expression "(puVar11 < this->ranges_buffer_end_)" ( (binary_expression "puVar11 < this->ranges_buffer_end_" identifier < (field_expression "this->ranges_buffer_end_" identifier -> field_identifier)) )) ;) })) (return_statement "return this_00;" return identifier ;) }))
(translation_unit "undefined4 *\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)\n\n{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}\n\n" (function_definition "undefined4 *\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)\n\n{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}" type_identifier (pointer_declarator "*\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" * (function_declarator "FUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" identifier (parameter_list "(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "uint param_8" type_identifier identifier) , (parameter_declaration "int param_9" primitive_type identifier) )))) (compound_statement "{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "FUN_0004fb82();" (call_expression "FUN_0004fb82()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);" (assignment_expression "cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7)" identifier = (call_expression "FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,param_7)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (undefined4 *)0x0;\n  }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar10 = param_8 - param_1[7];" (assignment_expression "uVar10 = param_8 - param_1[7]" identifier = (binary_expression "param_8 - param_1[7]" identifier - (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);" (assignment_expression "iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7])" identifier = (binary_expression "(param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7])" (parenthesized_expression "(param_9 - param_1[8])" ( (binary_expression "param_9 - param_1[8]" identifier - (subscript_expression "param_1[8]" identifier [ number_literal ])) )) - (call_expression "(uint)(param_8 < (uint)param_1[7])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_8 < (uint)param_1[7])" ( (binary_expression "param_8 < (uint)param_1[7]" identifier < (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ))))) ;) (expression_statement "puVar7 = (undefined4 *)FUN_0017ebf0(0xc);" (assignment_expression "puVar7 = (undefined4 *)FUN_0017ebf0(0xc)" identifier = (cast_expression "(undefined4 *)FUN_0017ebf0(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar11 = (uint *)(iVar2 + uVar10);" (assignment_expression "puVar11 = (uint *)(iVar2 + uVar10)" identifier = (cast_expression "(uint *)(iVar2 + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar10)" ( (binary_expression "iVar2 + uVar10" identifier + identifier) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }" if (parenthesized_expression "(puVar11 < (uint *)param_1[3])" ( (binary_expression "puVar11 < (uint *)param_1[3]" identifier < (cast_expression "(uint *)param_1[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) )) (compound_statement "{\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }" { (expression_statement "pcVar1 = (code *)(unaff_EBP + -0x1b4f6);" (assignment_expression "pcVar1 = (code *)(unaff_EBP + -0x1b4f6)" identifier = (cast_expression "(code *)(unaff_EBP + -0x1b4f6)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1b4f6)" ( (binary_expression "unaff_EBP + -0x1b4f6" identifier + number_literal) )))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (do_statement "do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);" do (compound_statement "{\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    }" { (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "pcVar4 = *(code **)(iVar2 + 0xc);" (assignment_expression "pcVar4 = *(code **)(iVar2 + 0xc)" identifier = (pointer_expression "*(code **)(iVar2 + 0xc)" * (cast_expression "(code **)(iVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" identifier = identifier) ;) (if_statement "if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" if (parenthesized_expression "(param_6 == 4)" ( (binary_expression "param_6 == 4" identifier == number_literal) )) (compound_statement "{\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }" { (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(iVar2 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(iVar2 + 0xe8))" ( (pointer_expression "**(code **)(iVar2 + 0xe8)" * (pointer_expression "*(code **)(iVar2 + 0xe8)" * (cast_expression "(code **)(iVar2 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xe8)" ( (binary_expression "iVar2 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_44 = *puVar11;" (assignment_expression "local_44 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }" { (expression_statement "local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;" (assignment_expression "local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" identifier = (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" ( (binary_expression "local_44 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" ( (binary_expression "local_44 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_44 << 0x18" identifier << number_literal))) ;) })) (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar4 = *(code **)(*piVar3 + 0xc);" (assignment_expression "pcVar4 = *(code **)(*piVar3 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar3 + 0xc)" * (cast_expression "(code **)(*piVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(*piVar3 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(*piVar3 + 0xe8))" ( (pointer_expression "**(code **)(*piVar3 + 0xe8)" * (pointer_expression "*(code **)(*piVar3 + 0xe8)" * (cast_expression "(code **)(*piVar3 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xe8)" ( (binary_expression "*piVar3 + 0xe8" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "local_3c = *(uint *)(iVar2 + 4 + uVar10);" (assignment_expression "local_3c = *(uint *)(iVar2 + 4 + uVar10)" identifier = (pointer_expression "*(uint *)(iVar2 + 4 + uVar10)" * (cast_expression "(uint *)(iVar2 + 4 + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4 + uVar10)" ( (binary_expression "iVar2 + 4 + uVar10" (binary_expression "iVar2 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }" { (expression_statement "local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;" (assignment_expression "local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" identifier = (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8" (binary_expression "local_3c >> 0x18" identifier >> number_literal) | (binary_expression "(local_3c & 0xff0000) >> 8" (parenthesized_expression "(local_3c & 0xff0000)" ( (binary_expression "local_3c & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_3c & 0xff00) << 8" (parenthesized_expression "(local_3c & 0xff00)" ( (binary_expression "local_3c & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_3c << 0x18" identifier << number_literal))) ;) })) }) (else_clause "else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" else (compound_statement "{\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" { (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(iVar2 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(iVar2 + 0xe8))" ( (pointer_expression "**(code **)(iVar2 + 0xe8)" * (pointer_expression "*(code **)(iVar2 + 0xe8)" * (cast_expression "(code **)(iVar2 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xe8)" ( (binary_expression "iVar2 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "local_44 = *puVar11;" (assignment_expression "local_44 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar8 = puVar11[1];" (assignment_expression "uVar8 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "local_40 = uVar8;" (assignment_expression "local_40 = uVar8" identifier = identifier) ;) (if_statement "if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }" { (expression_statement "local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;" (assignment_expression "local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" identifier = (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" ( (binary_expression "local_44 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" ( (binary_expression "local_44 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_44 << 0x18" identifier << number_literal))) ;) (expression_statement "local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;" (assignment_expression "local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) })) (expression_statement "puVar11 = (uint *)(param_1[2] + 8 + uVar10);" (assignment_expression "puVar11 = (uint *)(param_1[2] + 8 + uVar10)" identifier = (cast_expression "(uint *)(param_1[2] + 8 + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + 8 + uVar10)" ( (binary_expression "param_1[2] + 8 + uVar10" (binary_expression "param_1[2] + 8" (subscript_expression "param_1[2]" identifier [ number_literal ]) + number_literal) + identifier) )))) ;) (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar4 = *(code **)(*piVar3 + 0xc);" (assignment_expression "pcVar4 = *(code **)(*piVar3 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar3 + 0xc)" * (cast_expression "(code **)(*piVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" if (parenthesized_expression "(pcVar4 == pcVar1)" ( (binary_expression "pcVar4 == pcVar1" identifier == identifier) )) (compound_statement "{\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }" { (expression_statement "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3)" identifier = (call_expression "(**(code **)(*piVar3 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(*piVar3 + 0xe8))" ( (pointer_expression "**(code **)(*piVar3 + 0xe8)" * (pointer_expression "*(code **)(*piVar3 + 0xe8)" * (cast_expression "(code **)(*piVar3 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xe8)" ( (binary_expression "*piVar3 + 0xe8" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier )))) ;) }) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" else (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" { (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" identifier = (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(piVar3)" ( identifier )))) ;) }))) (expression_statement "local_3c = *puVar11;" (assignment_expression "local_3c = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar10 = puVar11[1];" (assignment_expression "uVar10 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "local_38 = uVar10;" (assignment_expression "local_38 = uVar10" identifier = identifier) ;) (if_statement "if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }" { (expression_statement "local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;" (assignment_expression "local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" identifier = (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8" (binary_expression "local_3c >> 0x18" identifier >> number_literal) | (binary_expression "(local_3c & 0xff0000) >> 8" (parenthesized_expression "(local_3c & 0xff0000)" ( (binary_expression "local_3c & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_3c & 0xff00) << 8" (parenthesized_expression "(local_3c & 0xff00)" ( (binary_expression "local_3c & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_3c << 0x18" identifier << number_literal))) ;) (expression_statement "local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;" (assignment_expression "local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) })) }))) (if_statement "if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }" { (if_statement "if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" if (parenthesized_expression "(local_40 == 0 && local_44 == 0)" ( (binary_expression "local_40 == 0 && local_44 == 0" (binary_expression "local_40 == 0" identifier == number_literal) && (binary_expression "local_44 == 0" identifier == number_literal)) )) (compound_statement "{\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }" { (if_statement "if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }" if (parenthesized_expression "(local_38 == 0 && local_3c == 0)" ( (binary_expression "local_38 == 0 && local_3c == 0" (binary_expression "local_38 == 0" identifier == number_literal) && (binary_expression "local_3c == 0" identifier == number_literal)) )) (compound_statement "{\n            return puVar7;\n          }" { (return_statement "return puVar7;" return identifier ;) })) }) (else_clause "else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" else (if_statement "if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" if (parenthesized_expression "((local_40 & local_44) == 0xffffffff)" ( (binary_expression "(local_40 & local_44) == 0xffffffff" (parenthesized_expression "(local_40 & local_44)" ( (binary_expression "local_40 & local_44" identifier & identifier) )) == number_literal) )) (compound_statement "{\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" { (expression_statement "local_5c = local_3c;" (assignment_expression "local_5c = local_3c" identifier = identifier) ;) (expression_statement "local_58 = local_38;" (assignment_expression "local_58 = local_38" identifier = identifier) ;) (goto_statement "goto LAB_00052880;" goto statement_identifier ;) })))) (labeled_statement "LAB_0005295f:\n        uVar10 = 0;" statement_identifier : (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00052961:\n        local_2c = local_44 + local_5c;" statement_identifier : (expression_statement "local_2c = local_44 + local_5c;" (assignment_expression "local_2c = local_44 + local_5c" identifier = (binary_expression "local_44 + local_5c" identifier + identifier)) ;)) (expression_statement "local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);" (assignment_expression "local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c)" identifier = (binary_expression "local_40 + local_58 + (uint)CARRY4(local_44,local_5c)" (binary_expression "local_40 + local_58" identifier + identifier) + (cast_expression "(uint)CARRY4(local_44,local_5c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_44,local_5c)" identifier (argument_list "(local_44,local_5c)" ( identifier , identifier )))))) ;) (expression_statement "local_24 = local_3c + local_5c;" (assignment_expression "local_24 = local_3c + local_5c" identifier = (binary_expression "local_3c + local_5c" identifier + identifier)) ;) (expression_statement "local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);" (assignment_expression "local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c)" identifier = (binary_expression "local_38 + local_58 + (uint)CARRY4(local_3c,local_5c)" (binary_expression "local_38 + local_58" identifier + identifier) + (cast_expression "(uint)CARRY4(local_3c,local_5c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_3c,local_5c)" identifier (argument_list "(local_3c,local_5c)" ( identifier , identifier )))))) ;) (expression_statement "puVar11 = (uint *)puVar7[1];" (assignment_expression "puVar11 = (uint *)puVar7[1]" identifier = (cast_expression "(uint *)puVar7[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "local_30 = uVar10;" (assignment_expression "local_30 = uVar10" identifier = identifier) ;) (if_statement "if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" if (parenthesized_expression "(puVar11 == (uint *)puVar7[2])" ( (binary_expression "puVar11 == (uint *)puVar7[2]" identifier == (cast_expression "(uint *)puVar7[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }" { (expression_statement "FUN_00054df0(puVar7,puVar11,&local_30);" (call_expression "FUN_00054df0(puVar7,puVar11,&local_30)" identifier (argument_list "(puVar7,puVar11,&local_30)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) ))) ;) }) (else_clause "else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" else (compound_statement "{\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" { (expression_statement "*puVar11 = uVar10;" (assignment_expression "*puVar11 = uVar10" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = local_2c;" (assignment_expression "puVar11[1] = local_2c" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = local_28;" (assignment_expression "puVar11[2] = local_28" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[3] = local_24;" (assignment_expression "puVar11[3] = local_24" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[4] = local_20;" (assignment_expression "puVar11[4] = local_20" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[1] = puVar11 + 5;" (assignment_expression "puVar7[1] = puVar11 + 5" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (binary_expression "puVar11 + 5" identifier + number_literal)) ;) }))) }) (else_clause "else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" else (compound_statement "{\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" { (expression_statement "uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);" (assignment_expression "uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44)" identifier = (call_expression "FUN_00050290(param_1,uVar13,iVar12,&local_44)" identifier (argument_list "(param_1,uVar13,iVar12,&local_44)" ( identifier , identifier , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (expression_statement "uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);" (assignment_expression "uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" identifier = (call_expression "FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" identifier (argument_list "(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" ( identifier , (binary_expression "param_6 + uVar13" identifier + identifier) , (binary_expression "iVar12 + (uint)CARRY4(param_6,uVar13)" identifier + (cast_expression "(uint)CARRY4(param_6,uVar13)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(param_6,uVar13)" identifier (argument_list "(param_6,uVar13)" ( identifier , identifier ))))) , (pointer_expression "&local_3c" & identifier) )))) ;) (if_statement "if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }" { (if_statement "if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" if (parenthesized_expression "(local_40 == 0 && local_44 == 0)" ( (binary_expression "local_40 == 0 && local_44 == 0" (binary_expression "local_40 == 0" identifier == number_literal) && (binary_expression "local_44 == 0" identifier == number_literal)) )) (compound_statement "{\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" { (if_statement "if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }" if (parenthesized_expression "(local_38 == 0 && local_3c == 0)" ( (binary_expression "local_38 == 0 && local_3c == 0" (binary_expression "local_38 == 0" identifier == number_literal) && (binary_expression "local_3c == 0" identifier == number_literal)) )) (compound_statement "{\n              return puVar7;\n            }" { (return_statement "return puVar7;" return identifier ;) })) (labeled_statement "LAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;" statement_identifier : (if_statement "if (uVar8 != 0) goto LAB_000529f0;" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000529f0;" goto statement_identifier ;))) (goto_statement "goto LAB_0005295f;" goto statement_identifier ;) })) (if_statement "if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;" if (parenthesized_expression "((local_40 & local_44) != 0xffffffff)" ( (binary_expression "(local_40 & local_44) != 0xffffffff" (parenthesized_expression "(local_40 & local_44)" ( (binary_expression "local_40 & local_44" identifier & identifier) )) != number_literal) )) (goto_statement "goto LAB_00052b1a;" goto statement_identifier ;)) (expression_statement "local_5c = local_3c;" (assignment_expression "local_5c = local_3c" identifier = identifier) ;) (expression_statement "local_58 = local_38;" (assignment_expression "local_58 = local_38" identifier = identifier) ;) }) (else_clause "else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" else (compound_statement "{\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" { (if_statement "if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" if (parenthesized_expression "(uVar10 == uVar8)" ( (binary_expression "uVar10 == uVar8" identifier == identifier) )) (compound_statement "{\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" { (if_statement "if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }" if (parenthesized_expression "((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10)" ( (binary_expression "(uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10" (call_expression "(uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2)" ( (binary_expression "*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2" (binary_expression "*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38)" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x38)" * (cast_expression "(int *)(param_2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }" { (expression_statement "FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));" (call_expression "FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c))" identifier (argument_list "(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c))" ( (binary_expression "unaff_EBP + 0x1c78f4" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x1ce062" identifier + number_literal) , identifier , identifier , identifier , (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) ))) ;) })) (if_statement "if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;" if (parenthesized_expression "(*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0)" ( (binary_expression "*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0" (pointer_expression "*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4)" * (cast_expression "(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x38) + uVar10 * 4)" ( (binary_expression "*(int *)(param_2 + 0x38) + uVar10 * 4" (pointer_expression "*(int *)(param_2 + 0x38)" * (cast_expression "(int *)(param_2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) == number_literal) )) (goto_statement "goto LAB_00052880;" goto statement_identifier ;)) (goto_statement "goto LAB_00052961;" goto statement_identifier ;) })) (labeled_statement "LAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);" statement_identifier : (expression_statement "uVar5 = *(undefined4 *)(param_2 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;)) (expression_statement "uVar9 = gettext(unaff_EBP + 0x1cde3e);" (assignment_expression "uVar9 = gettext(unaff_EBP + 0x1cde3e)" identifier = (call_expression "gettext(unaff_EBP + 0x1cde3e)" identifier (argument_list "(unaff_EBP + 0x1cde3e)" ( (binary_expression "unaff_EBP + 0x1cde3e" identifier + number_literal) )))) ;) (expression_statement "FUN_0005ad30(uVar9,uVar5);" (call_expression "FUN_0005ad30(uVar9,uVar5)" identifier (argument_list "(uVar9,uVar5)" ( identifier , identifier ))) ;) }))) }))) (labeled_statement "LAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;" statement_identifier : (expression_statement "uVar10 = uVar13 + param_6 * 2;" (assignment_expression "uVar10 = uVar13 + param_6 * 2" identifier = (binary_expression "uVar13 + param_6 * 2" identifier + (binary_expression "param_6 * 2" identifier * number_literal))) ;)) (expression_statement "iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);" (assignment_expression "iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2)" identifier = (binary_expression "iVar12 + (uint)CARRY4(uVar13,param_6 * 2)" identifier + (cast_expression "(uint)CARRY4(uVar13,param_6 * 2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar13,param_6 * 2)" identifier (argument_list "(uVar13,param_6 * 2)" ( identifier , (binary_expression "param_6 * 2" identifier * number_literal) )))))) ;) (expression_statement "puVar11 = (uint *)(param_1[2] + uVar10);" (assignment_expression "puVar11 = (uint *)(param_1[2] + uVar10)" identifier = (cast_expression "(uint *)(param_1[2] + uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[2] + uVar10)" ( (binary_expression "param_1[2] + uVar10" (subscript_expression "param_1[2]" identifier [ number_literal ]) + identifier) )))) ;) }) while (parenthesized_expression "(puVar11 < (uint *)param_1[3])" ( (binary_expression "puVar11 < (uint *)param_1[3]" identifier < (cast_expression "(uint *)param_1[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) )) ;) })) (return_statement "return puVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (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 (pointer_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 (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) , (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 *\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)\n\n{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" (* "*") (function_declarator "FUN_00052720(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" (identifier "FUN_00052720") (parameter_list "(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,uint param_8,int param_9)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "uint param_8" (type_identifier "uint") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) () ")")))) (compound_statement "{\n  code *pcVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint *puVar11;\n  int unaff_EBP;\n  int iVar12;\n  uint uVar13;\n  uint local_5c;\n  uint local_58;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  uint local_38;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  FUN_0004fb82();\n  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);\n  if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }\n  uVar10 = param_8 - param_1[7];\n  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);\n  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);\n  iVar2 = param_1[2];\n  *puVar7 = 0;\n  puVar11 = (uint *)(iVar2 + uVar10);\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }\n  return puVar7;\n}" ({ "{") (declaration "code *pcVar1;" (type_identifier "code") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (expression_statement "FUN_0004fb82();" (call_expression "FUN_0004fb82()" (identifier "FUN_0004fb82") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);" (assignment_expression "cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7)" (identifier "cVar6") (= "=") (call_expression "FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7)" (identifier "FUN_0004fde0") (argument_list "(param_1,param_2,param_3,param_4,param_5,param_7)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_7") () ")")))) (; ";")) (if_statement "if (cVar6 == '\0') {\n    return (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "(cVar6 == '\0')" (( "(") (binary_expression "cVar6 == '\0'" (identifier "cVar6") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return (undefined4 *)0x0;\n  }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar10 = param_8 - param_1[7];" (assignment_expression "uVar10 = param_8 - param_1[7]" (identifier "uVar10") (= "=") (binary_expression "param_8 - param_1[7]" (identifier "param_8") (- "-") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);" (assignment_expression "iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7])" (identifier "iVar12") (= "=") (binary_expression "(param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7])" (parenthesized_expression "(param_9 - param_1[8])" (( "(") (binary_expression "param_9 - param_1[8]" (identifier "param_9") (- "-") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) () ")")) (- "-") (call_expression "(uint)(param_8 < (uint)param_1[7])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_8 < (uint)param_1[7])" (( "(") (binary_expression "param_8 < (uint)param_1[7]" (identifier "param_8") (< "<") (cast_expression "(uint)param_1[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) () ")"))))) (; ";")) (expression_statement "puVar7 = (undefined4 *)FUN_0017ebf0(0xc);" (assignment_expression "puVar7 = (undefined4 *)FUN_0017ebf0(0xc)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)FUN_0017ebf0(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(0xc)" (identifier "FUN_0017ebf0") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" (identifier "iVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = (uint *)(iVar2 + uVar10);" (assignment_expression "puVar11 = (uint *)(iVar2 + uVar10)" (identifier "puVar11") (= "=") (cast_expression "(uint *)(iVar2 + uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + uVar10)" (( "(") (binary_expression "iVar2 + uVar10" (identifier "iVar2") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar11 < (uint *)param_1[3]) {\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }" (if "if") (parenthesized_expression "(puVar11 < (uint *)param_1[3])" (( "(") (binary_expression "puVar11 < (uint *)param_1[3]" (identifier "puVar11") (< "<") (cast_expression "(uint *)param_1[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);\n    local_5c = 0;\n    local_58 = 0;\n    do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);\n  }" ({ "{") (expression_statement "pcVar1 = (code *)(unaff_EBP + -0x1b4f6);" (assignment_expression "pcVar1 = (code *)(unaff_EBP + -0x1b4f6)" (identifier "pcVar1") (= "=") (cast_expression "(code *)(unaff_EBP + -0x1b4f6)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x1b4f6)" (( "(") (binary_expression "unaff_EBP + -0x1b4f6" (identifier "unaff_EBP") (+ "+") (number_literal "-0x1b4f6")) () ")")))) (; ";")) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    } while (puVar11 < (uint *)param_1[3]);" (do "do") (compound_statement "{\n      piVar3 = *(int **)(*param_1 + 8);\n      iVar2 = *piVar3;\n      pcVar4 = *(code **)(iVar2 + 0xc);\n      uVar13 = uVar10;\n      if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }\n      if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }\nLAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;\n      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);\n      puVar11 = (uint *)(param_1[2] + uVar10);\n    }" ({ "{") (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" (identifier "iVar2") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "pcVar4 = *(code **)(iVar2 + 0xc);" (assignment_expression "pcVar4 = *(code **)(iVar2 + 0xc)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(iVar2 + 0xc)" (* "*") (cast_expression "(code **)(iVar2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" (identifier "uVar13") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (param_6 == 4) {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }\n      else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" (if "if") (parenthesized_expression "(param_6 == 4)" (( "(") (binary_expression "param_6 == 4" (identifier "param_6") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        iVar2 = param_1[2];\n        local_44 = *puVar11;\n        local_40 = 0;\n        if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *(uint *)(iVar2 + 4 + uVar10);\n        local_38 = 0;\n        if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }\n      }" ({ "{") (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (if "if") (parenthesized_expression "(pcVar4 == pcVar1)" (( "(") (binary_expression "pcVar4 == pcVar1" (identifier "pcVar4") (== "==") (identifier "pcVar1")) () ")")) (compound_statement "{\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3)" (identifier "cVar6") (= "=") (call_expression "(**(code **)(iVar2 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(iVar2 + 0xe8))" (( "(") (pointer_expression "**(code **)(iVar2 + 0xe8)" (* "*") (pointer_expression "*(code **)(iVar2 + 0xe8)" (* "*") (cast_expression "(code **)(iVar2 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xe8)" (( "(") (binary_expression "iVar2 + 0xe8" (identifier "iVar2") (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (else "else") (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" (identifier "cVar6") (= "=") (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar2 = param_1[2];" (assignment_expression "iVar2 = param_1[2]" (identifier "iVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_44 = *puVar11;" (assignment_expression "local_44 = *puVar11" (identifier "local_44") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (if_statement "if (cVar6 != '\0') {\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n        }" ({ "{") (expression_statement "local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;" (assignment_expression "local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (identifier "local_44") (= "=") (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" (identifier "local_44") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" (( "(") (binary_expression "local_44 & 0xff0000" (identifier "local_44") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" (( "(") (binary_expression "local_44 & 0xff00" (identifier "local_44") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_44 << 0x18" (identifier "local_44") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar4 = *(code **)(*piVar3 + 0xc);" (assignment_expression "pcVar4 = *(code **)(*piVar3 + 0xc)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(*piVar3 + 0xc)" (* "*") (cast_expression "(code **)(*piVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0xc)" (( "(") (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (if "if") (parenthesized_expression "(pcVar4 == pcVar1)" (( "(") (binary_expression "pcVar4 == pcVar1" (identifier "pcVar4") (== "==") (identifier "pcVar1")) () ")")) (compound_statement "{\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3)" (identifier "cVar6") (= "=") (call_expression "(**(code **)(*piVar3 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(*piVar3 + 0xe8))" (( "(") (pointer_expression "**(code **)(*piVar3 + 0xe8)" (* "*") (pointer_expression "*(code **)(*piVar3 + 0xe8)" (* "*") (cast_expression "(code **)(*piVar3 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0xe8)" (( "(") (binary_expression "*piVar3 + 0xe8" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (else "else") (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" (identifier "cVar6") (= "=") (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")))) (expression_statement "local_3c = *(uint *)(iVar2 + 4 + uVar10);" (assignment_expression "local_3c = *(uint *)(iVar2 + 4 + uVar10)" (identifier "local_3c") (= "=") (pointer_expression "*(uint *)(iVar2 + 4 + uVar10)" (* "*") (cast_expression "(uint *)(iVar2 + 4 + uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4 + uVar10)" (( "(") (binary_expression "iVar2 + 4 + uVar10" (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) (+ "+") (identifier "uVar10")) () ")"))))) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (if_statement "if (cVar6 != '\0') {\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n        }" ({ "{") (expression_statement "local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;" (assignment_expression "local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (identifier "local_3c") (= "=") (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8" (binary_expression "local_3c >> 0x18" (identifier "local_3c") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_3c & 0xff0000) >> 8" (parenthesized_expression "(local_3c & 0xff0000)" (( "(") (binary_expression "local_3c & 0xff0000" (identifier "local_3c") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_3c & 0xff00) << 8" (parenthesized_expression "(local_3c & 0xff00)" (( "(") (binary_expression "local_3c & 0xff00" (identifier "local_3c") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_3c << 0x18" (identifier "local_3c") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" (else "else") (compound_statement "{\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_44 = *puVar11;\n        uVar8 = puVar11[1];\n        local_40 = uVar8;\n        if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }\n        puVar11 = (uint *)(param_1[2] + 8 + uVar10);\n        piVar3 = *(int **)(*param_1 + 8);\n        pcVar4 = *(code **)(*piVar3 + 0xc);\n        if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }\n        local_3c = *puVar11;\n        uVar10 = puVar11[1];\n        local_38 = uVar10;\n        if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }\n      }" ({ "{") (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (if "if") (parenthesized_expression "(pcVar4 == pcVar1)" (( "(") (binary_expression "pcVar4 == pcVar1" (identifier "pcVar4") (== "==") (identifier "pcVar1")) () ")")) (compound_statement "{\n          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3)" (identifier "cVar6") (= "=") (call_expression "(**(code **)(iVar2 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(iVar2 + 0xe8))" (( "(") (pointer_expression "**(code **)(iVar2 + 0xe8)" (* "*") (pointer_expression "*(code **)(iVar2 + 0xe8)" (* "*") (cast_expression "(code **)(iVar2 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xe8)" (( "(") (binary_expression "iVar2 + 0xe8" (identifier "iVar2") (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (else "else") (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" (identifier "cVar6") (= "=") (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")))) (expression_statement "local_44 = *puVar11;" (assignment_expression "local_44 = *puVar11" (identifier "local_44") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "uVar8 = puVar11[1];" (assignment_expression "uVar8 = puVar11[1]" (identifier "uVar8") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_40 = uVar8;" (assignment_expression "local_40 = uVar8" (identifier "local_40") (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (cVar6 != '\0') {\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;\n          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;\n        }" ({ "{") (expression_statement "local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18;" (assignment_expression "local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (identifier "local_40") (= "=") (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                     local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" (identifier "local_44") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" (( "(") (binary_expression "local_44 & 0xff0000" (identifier "local_44") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" (( "(") (binary_expression "local_44 & 0xff00" (identifier "local_44") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_44 << 0x18" (identifier "local_44") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18\n          ;" (assignment_expression "local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (identifier "local_44") (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "puVar11 = (uint *)(param_1[2] + 8 + uVar10);" (assignment_expression "puVar11 = (uint *)(param_1[2] + 8 + uVar10)" (identifier "puVar11") (= "=") (cast_expression "(uint *)(param_1[2] + 8 + uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[2] + 8 + uVar10)" (( "(") (binary_expression "param_1[2] + 8 + uVar10" (binary_expression "param_1[2] + 8" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "8")) (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "piVar3 = *(int **)(*param_1 + 8);" (assignment_expression "piVar3 = *(int **)(*param_1 + 8)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar4 = *(code **)(*piVar3 + 0xc);" (assignment_expression "pcVar4 = *(code **)(*piVar3 + 0xc)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(*piVar3 + 0xc)" (* "*") (cast_expression "(code **)(*piVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0xc)" (( "(") (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar4 == pcVar1) {\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }\n        else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (if "if") (parenthesized_expression "(pcVar4 == pcVar1)" (( "(") (binary_expression "pcVar4 == pcVar1" (identifier "pcVar4") (== "==") (identifier "pcVar1")) () ")")) (compound_statement "{\n          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);" (assignment_expression "cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3)" (identifier "cVar6") (= "=") (call_expression "(**(code **)(*piVar3 + 0xe8))(piVar3)" (parenthesized_expression "(**(code **)(*piVar3 + 0xe8))" (( "(") (pointer_expression "**(code **)(*piVar3 + 0xe8)" (* "*") (pointer_expression "*(code **)(*piVar3 + 0xe8)" (* "*") (cast_expression "(code **)(*piVar3 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0xe8)" (( "(") (binary_expression "*piVar3 + 0xe8" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          cVar6 = (*pcVar4)(piVar3);\n        }" (else "else") (compound_statement "{\n          cVar6 = (*pcVar4)(piVar3);\n        }" ({ "{") (expression_statement "cVar6 = (*pcVar4)(piVar3);" (assignment_expression "cVar6 = (*pcVar4)(piVar3)" (identifier "cVar6") (= "=") (call_expression "(*pcVar4)(piVar3)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")")))) (; ";")) (} "}")))) (expression_statement "local_3c = *puVar11;" (assignment_expression "local_3c = *puVar11" (identifier "local_3c") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "uVar10 = puVar11[1];" (assignment_expression "uVar10 = puVar11[1]" (identifier "uVar10") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_38 = uVar10;" (assignment_expression "local_38 = uVar10" (identifier "local_38") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (cVar6 != '\0') {\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;\n          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;\n        }" ({ "{") (expression_statement "local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18;" (assignment_expression "local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (identifier "local_38") (= "=") (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |\n                     local_3c << 0x18" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8" (binary_expression "local_3c >> 0x18 | (local_3c & 0xff0000) >> 8" (binary_expression "local_3c >> 0x18" (identifier "local_3c") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_3c & 0xff0000) >> 8" (parenthesized_expression "(local_3c & 0xff0000)" (( "(") (binary_expression "local_3c & 0xff0000" (identifier "local_3c") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_3c & 0xff00) << 8" (parenthesized_expression "(local_3c & 0xff00)" (( "(") (binary_expression "local_3c & 0xff00" (identifier "local_3c") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_3c << 0x18" (identifier "local_3c") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18;" (assignment_expression "local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18" (identifier "local_3c") (= "=") (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                     uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" (identifier "uVar10") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" (( "(") (binary_expression "uVar10 & 0xff0000" (identifier "uVar10") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" (( "(") (binary_expression "uVar10 & 0xff00" (identifier "uVar10") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar10 << 0x18" (identifier "uVar10") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (param_1[5] == 0) {\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }\n      else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" (if "if") (parenthesized_expression "(param_1[5] == 0)" (( "(") (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }\nLAB_0005295f:\n        uVar10 = 0;\nLAB_00052961:\n        local_2c = local_44 + local_5c;\n        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);\n        local_24 = local_3c + local_5c;\n        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);\n        puVar11 = (uint *)puVar7[1];\n        local_30 = uVar10;\n        if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }\n      }" ({ "{") (if_statement "if (local_40 == 0 && local_44 == 0) {\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }\n        else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" (if "if") (parenthesized_expression "(local_40 == 0 && local_44 == 0)" (( "(") (binary_expression "local_40 == 0 && local_44 == 0" (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n          if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }\n        }" ({ "{") (if_statement "if (local_38 == 0 && local_3c == 0) {\n            return puVar7;\n          }" (if "if") (parenthesized_expression "(local_38 == 0 && local_3c == 0)" (( "(") (binary_expression "local_38 == 0 && local_3c == 0" (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n            return puVar7;\n          }" ({ "{") (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" (else "else") (if_statement "if ((local_40 & local_44) == 0xffffffff) {\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" (if "if") (parenthesized_expression "((local_40 & local_44) == 0xffffffff)" (( "(") (binary_expression "(local_40 & local_44) == 0xffffffff" (parenthesized_expression "(local_40 & local_44)" (( "(") (binary_expression "local_40 & local_44" (identifier "local_40") (& "&") (identifier "local_44")) () ")")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          local_5c = local_3c;\n          local_58 = local_38;\n          goto LAB_00052880;\n        }" ({ "{") (expression_statement "local_5c = local_3c;" (assignment_expression "local_5c = local_3c" (identifier "local_5c") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_58 = local_38;" (assignment_expression "local_58 = local_38" (identifier "local_58") (= "=") (identifier "local_38")) (; ";")) (goto_statement "goto LAB_00052880;" (goto "goto") (statement_identifier "LAB_00052880") (; ";")) (} "}"))))) (labeled_statement "LAB_0005295f:\n        uVar10 = 0;" (statement_identifier "LAB_0005295f") (: ":") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00052961:\n        local_2c = local_44 + local_5c;" (statement_identifier "LAB_00052961") (: ":") (expression_statement "local_2c = local_44 + local_5c;" (assignment_expression "local_2c = local_44 + local_5c" (identifier "local_2c") (= "=") (binary_expression "local_44 + local_5c" (identifier "local_44") (+ "+") (identifier "local_5c"))) (; ";"))) (expression_statement "local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);" (assignment_expression "local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c)" (identifier "local_28") (= "=") (binary_expression "local_40 + local_58 + (uint)CARRY4(local_44,local_5c)" (binary_expression "local_40 + local_58" (identifier "local_40") (+ "+") (identifier "local_58")) (+ "+") (cast_expression "(uint)CARRY4(local_44,local_5c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(local_44,local_5c)" (identifier "CARRY4") (argument_list "(local_44,local_5c)" (( "(") (identifier "local_44") (, ",") (identifier "local_5c") () ")")))))) (; ";")) (expression_statement "local_24 = local_3c + local_5c;" (assignment_expression "local_24 = local_3c + local_5c" (identifier "local_24") (= "=") (binary_expression "local_3c + local_5c" (identifier "local_3c") (+ "+") (identifier "local_5c"))) (; ";")) (expression_statement "local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);" (assignment_expression "local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c)" (identifier "local_20") (= "=") (binary_expression "local_38 + local_58 + (uint)CARRY4(local_3c,local_5c)" (binary_expression "local_38 + local_58" (identifier "local_38") (+ "+") (identifier "local_58")) (+ "+") (cast_expression "(uint)CARRY4(local_3c,local_5c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(local_3c,local_5c)" (identifier "CARRY4") (argument_list "(local_3c,local_5c)" (( "(") (identifier "local_3c") (, ",") (identifier "local_5c") () ")")))))) (; ";")) (expression_statement "puVar11 = (uint *)puVar7[1];" (assignment_expression "puVar11 = (uint *)puVar7[1]" (identifier "puVar11") (= "=") (cast_expression "(uint *)puVar7[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_30 = uVar10;" (assignment_expression "local_30 = uVar10" (identifier "local_30") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (puVar11 == (uint *)puVar7[2]) {\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }\n        else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" (if "if") (parenthesized_expression "(puVar11 == (uint *)puVar7[2])" (( "(") (binary_expression "puVar11 == (uint *)puVar7[2]" (identifier "puVar11") (== "==") (cast_expression "(uint *)puVar7[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n          FUN_00054df0(puVar7,puVar11,&local_30);\n        }" ({ "{") (expression_statement "FUN_00054df0(puVar7,puVar11,&local_30);" (call_expression "FUN_00054df0(puVar7,puVar11,&local_30)" (identifier "FUN_00054df0") (argument_list "(puVar7,puVar11,&local_30)" (( "(") (identifier "puVar7") (, ",") (identifier "puVar11") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" (else "else") (compound_statement "{\n          *puVar11 = uVar10;\n          puVar11[1] = local_2c;\n          puVar11[2] = local_28;\n          puVar11[3] = local_24;\n          puVar11[4] = local_20;\n          puVar7[1] = puVar11 + 5;\n        }" ({ "{") (expression_statement "*puVar11 = uVar10;" (assignment_expression "*puVar11 = uVar10" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar11[1] = local_2c;" (assignment_expression "puVar11[1] = local_2c" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar11[2] = local_28;" (assignment_expression "puVar11[2] = local_28" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "puVar11[3] = local_24;" (assignment_expression "puVar11[3] = local_24" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar11[4] = local_20;" (assignment_expression "puVar11[4] = local_20" (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "puVar7[1] = puVar11 + 5;" (assignment_expression "puVar7[1] = puVar11 + 5" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar11 + 5" (identifier "puVar11") (+ "+") (number_literal "5"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" (else "else") (compound_statement "{\n        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);\n        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);\n        if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }\n      }" ({ "{") (expression_statement "uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);" (assignment_expression "uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44)" (identifier "uVar10") (= "=") (call_expression "FUN_00050290(param_1,uVar13,iVar12,&local_44)" (identifier "FUN_00050290") (argument_list "(param_1,uVar13,iVar12,&local_44)" (( "(") (identifier "param_1") (, ",") (identifier "uVar13") (, ",") (identifier "iVar12") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (expression_statement "uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c);" (assignment_expression "uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" (identifier "uVar8") (= "=") (call_expression "FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" (identifier "FUN_00050290") (argument_list "(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),\n                             &local_3c)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_6 + uVar13" (identifier "param_6") (+ "+") (identifier "uVar13")) (, ",") (binary_expression "iVar12 + (uint)CARRY4(param_6,uVar13)" (identifier "iVar12") (+ "+") (cast_expression "(uint)CARRY4(param_6,uVar13)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(param_6,uVar13)" (identifier "CARRY4") (argument_list "(param_6,uVar13)" (( "(") (identifier "param_6") (, ",") (identifier "uVar13") () ")"))))) (, ",") (pointer_expression "&local_3c" (& "&") (identifier "local_3c")) () ")")))) (; ";")) (if_statement "if (uVar10 == 0) {\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }\n        else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }\n          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;\n          local_5c = local_3c;\n          local_58 = local_38;\n        }" ({ "{") (if_statement "if (local_40 == 0 && local_44 == 0) {\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" (if "if") (parenthesized_expression "(local_40 == 0 && local_44 == 0)" (( "(") (binary_expression "local_40 == 0 && local_44 == 0" (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n            if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }\nLAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;\n            goto LAB_0005295f;\n          }" ({ "{") (if_statement "if (local_38 == 0 && local_3c == 0) {\n              return puVar7;\n            }" (if "if") (parenthesized_expression "(local_38 == 0 && local_3c == 0)" (( "(") (binary_expression "local_38 == 0 && local_3c == 0" (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n              return puVar7;\n            }" ({ "{") (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}"))) (labeled_statement "LAB_00052b1a:\n            if (uVar8 != 0) goto LAB_000529f0;" (statement_identifier "LAB_00052b1a") (: ":") (if_statement "if (uVar8 != 0) goto LAB_000529f0;" (if "if") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000529f0;" (goto "goto") (statement_identifier "LAB_000529f0") (; ";")))) (goto_statement "goto LAB_0005295f;" (goto "goto") (statement_identifier "LAB_0005295f") (; ";")) (} "}"))) (if_statement "if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;" (if "if") (parenthesized_expression "((local_40 & local_44) != 0xffffffff)" (( "(") (binary_expression "(local_40 & local_44) != 0xffffffff" (parenthesized_expression "(local_40 & local_44)" (( "(") (binary_expression "local_40 & local_44" (identifier "local_40") (& "&") (identifier "local_44")) () ")")) (!= "!=") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_00052b1a;" (goto "goto") (statement_identifier "LAB_00052b1a") (; ";"))) (expression_statement "local_5c = local_3c;" (assignment_expression "local_5c = local_3c" (identifier "local_5c") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_58 = local_38;" (assignment_expression "local_58 = local_38" (identifier "local_58") (= "=") (identifier "local_38")) (; ";")) (} "}")) (else_clause "else {\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" (else "else") (compound_statement "{\n          if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }\nLAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);\n          uVar9 = gettext(unaff_EBP + 0x1cde3e);\n          FUN_0005ad30(uVar9,uVar5);\n        }" ({ "{") (if_statement "if (uVar10 == uVar8) {\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" (if "if") (parenthesized_expression "(uVar10 == uVar8)" (( "(") (binary_expression "uVar10 == uVar8" (identifier "uVar10") (== "==") (identifier "uVar8")) () ")")) (compound_statement "{\n            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }\n            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;\n            goto LAB_00052961;\n          }" ({ "{") (if_statement "if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }" (if "if") (parenthesized_expression "((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10)" (( "(") (binary_expression "(uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10" (call_expression "(uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2)" (( "(") (binary_expression "*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2" (binary_expression "*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38)" (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (- "-") (pointer_expression "*(int *)(param_2 + 0x38)" (* "*") (cast_expression "(int *)(param_2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")"))))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n                    \n              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));\n            }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c));" (call_expression "FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c))" (identifier "FUN_0005f0b0") (argument_list "(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,\n                           *(int *)(param_2 + 0x3c))" (( "(") (binary_expression "unaff_EBP + 0x1c78f4" (identifier "unaff_EBP") (+ "+") (number_literal "0x1c78f4")) (, ",") (number_literal "0x50b") (, ",") (binary_expression "unaff_EBP + 0x1ce062" (identifier "unaff_EBP") (+ "+") (number_literal "0x1ce062")) (, ",") (identifier "uVar10") (, ",") (identifier "uVar13") (, ",") (identifier "iVar12") (, ",") (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0" (pointer_expression "*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x38) + uVar10 * 4)" (( "(") (binary_expression "*(int *)(param_2 + 0x38) + uVar10 * 4" (pointer_expression "*(int *)(param_2 + 0x38)" (* "*") (cast_expression "(int *)(param_2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00052880;" (goto "goto") (statement_identifier "LAB_00052880") (; ";"))) (goto_statement "goto LAB_00052961;" (goto "goto") (statement_identifier "LAB_00052961") (; ";")) (} "}"))) (labeled_statement "LAB_000529f0:\n          uVar5 = *(undefined4 *)(param_2 + 4);" (statement_identifier "LAB_000529f0") (: ":") (expression_statement "uVar5 = *(undefined4 *)(param_2 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_2 + 4)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "uVar9 = gettext(unaff_EBP + 0x1cde3e);" (assignment_expression "uVar9 = gettext(unaff_EBP + 0x1cde3e)" (identifier "uVar9") (= "=") (call_expression "gettext(unaff_EBP + 0x1cde3e)" (identifier "gettext") (argument_list "(unaff_EBP + 0x1cde3e)" (( "(") (binary_expression "unaff_EBP + 0x1cde3e" (identifier "unaff_EBP") (+ "+") (number_literal "0x1cde3e")) () ")")))) (; ";")) (expression_statement "FUN_0005ad30(uVar9,uVar5);" (call_expression "FUN_0005ad30(uVar9,uVar5)" (identifier "FUN_0005ad30") (argument_list "(uVar9,uVar5)" (( "(") (identifier "uVar9") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_00052880:\n      uVar10 = uVar13 + param_6 * 2;" (statement_identifier "LAB_00052880") (: ":") (expression_statement "uVar10 = uVar13 + param_6 * 2;" (assignment_expression "uVar10 = uVar13 + param_6 * 2" (identifier "uVar10") (= "=") (binary_expression "uVar13 + param_6 * 2" (identifier "uVar13") (+ "+") (binary_expression "param_6 * 2" (identifier "param_6") (* "*") (number_literal "2")))) (; ";"))) (expression_statement "iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);" (assignment_expression "iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2)" (identifier "iVar12") (= "=") (binary_expression "iVar12 + (uint)CARRY4(uVar13,param_6 * 2)" (identifier "iVar12") (+ "+") (cast_expression "(uint)CARRY4(uVar13,param_6 * 2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar13,param_6 * 2)" (identifier "CARRY4") (argument_list "(uVar13,param_6 * 2)" (( "(") (identifier "uVar13") (, ",") (binary_expression "param_6 * 2" (identifier "param_6") (* "*") (number_literal "2")) () ")")))))) (; ";")) (expression_statement "puVar11 = (uint *)(param_1[2] + uVar10);" (assignment_expression "puVar11 = (uint *)(param_1[2] + uVar10)" (identifier "puVar11") (= "=") (cast_expression "(uint *)(param_1[2] + uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[2] + uVar10)" (( "(") (binary_expression "param_1[2] + uVar10" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 < (uint *)param_1[3])" (( "(") (binary_expression "puVar11 < (uint *)param_1[3]" (identifier "puVar11") (< "<") (cast_expression "(uint *)param_1[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) () ")")) (; ";")) (} "}"))) (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: Dwarf_range_list * read_range_list(Dwarf_ranges_table * this, Relobj *
   object, uchar * symtab, off_t symtab_size, uint addr_size, uint ranges_shndx, off_t offset) */

type_6 * __thiscall
var_18::Dwarf_ranges_table::read_range_list
          (Dwarf_ranges_table *this,type_2 *object,type_1 *symtab,type_9 symtab_size,type_7 var_7,
          type_7 ranges_shndx,type_9 offset)

{
  type_1 *var_4;
  type_2 *pRVar2;
  type_3 **pp_Var3;
  type_3 *var_8;
  type_4 __position;
  type_5 pcVar5;
  type_5 ppOVar6;
  bool bVar7;
  char var_9;
  type_6 *this_00;
  type_7 var_17;
  char *format;
  type_8 return_value;
  type_7 *var_6;
  type_7 var_10;
  type_7 var_5;
  int var_16;
  type_7 var_11;
  type_7 var_12;
  type_9 start;
  type_9 end;
  type_10 local_30;
  int iVar10;
  
  bVar7 = var_1(this,object,symtab,symtab_size,ranges_shndx);
  if (!bVar7) {
    return (type_6 *)0x0;
  }
  var_5 = (type_7)offset - (int)this->output_section_offset_;
  var_16 = (offset._4_4_ - *(int *)((int)&this->output_section_offset_ + 4)) -
             (type_7)((type_7)offset < (type_7)this->output_section_offset_);
  this_00 = (type_6 *)var_2(0xc);
  var_4 = this->ranges_buffer_;
  (this_00->range_list_).
  super__Vector_base<var_18::Dwarf_range_list::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>.
  _M_impl._M_start = (type_5)0x0;
  var_6 = (type_7 *)(var_4 + var_5);
  (this_00->range_list_).
  super__Vector_base<var_18::Dwarf_range_list::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>.
  _M_impl._M_finish = (type_5)0x0;
  (this_00->range_list_).
  super__Vector_base<var_18::Dwarf_range_list::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>.
  _M_impl._M_end_of_storage = (type_5)0x0;
  if (var_6 < this->ranges_buffer_end_) {
    var_11 = 0;
    var_12 = 0;
    do {
      pRVar2 = this->dwinfo_->object_;
      pp_Var3 = (pRVar2->super_Object)._vptr_Object;
      var_8 = pp_Var3[3];
      if (var_7 == 4) {
        if (var_8 == type_2::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          var_9 = (char)iVar10;
        }
        else {
          iVar10 = (*var_8)(pRVar2);
          var_9 = (char)iVar10;
        }
        var_4 = this->ranges_buffer_;
        start._0_4_ = *var_6;
        start._4_4_ = 0;
        if (var_9 != '\0') {
          start._0_4_ = (type_7)start >> 0x18 | ((type_7)start & 0xff0000) >> 8 |
                        ((type_7)start & 0xff00) << 8 | (type_7)start << 0x18;
        }
        pRVar2 = this->dwinfo_->object_;
        pp_Var3 = (pRVar2->super_Object)._vptr_Object;
        var_8 = pp_Var3[3];
        if (var_8 == type_2::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          var_9 = (char)iVar10;
        }
        else {
          iVar10 = (*var_8)(pRVar2);
          var_9 = (char)iVar10;
        }
        end._0_4_ = *(type_7 *)(var_4 + var_5 + 4);
        end._4_4_ = 0;
        if (var_9 != '\0') {
          end._0_4_ = (type_7)end >> 0x18 | ((type_7)end & 0xff0000) >> 8 | ((type_7)end & 0xff00) << 8 |
                      (type_7)end << 0x18;
        }
      }
      else {
        if (var_8 == type_2::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          var_9 = (char)iVar10;
        }
        else {
          iVar10 = (*var_8)(pRVar2);
          var_9 = (char)iVar10;
        }
        start._0_4_ = *var_6;
        var_10 = var_6[1];
        start._4_4_ = var_10;
        if (var_9 != '\0') {
          start._4_4_ = (type_7)start >> 0x18 | ((type_7)start & 0xff0000) >> 8 |
                        ((type_7)start & 0xff00) << 8 | (type_7)start << 0x18;
          start._0_4_ = var_10 >> 0x18 | (var_10 & 0xff0000) >> 8 | (var_10 & 0xff00) << 8 |
                        var_10 << 0x18;
        }
        var_4 = this->ranges_buffer_;
        pRVar2 = this->dwinfo_->object_;
        pp_Var3 = (pRVar2->super_Object)._vptr_Object;
        var_8 = pp_Var3[3];
        if (var_8 == type_2::is_big_endian) {
          iVar10 = (*pp_Var3[0x3a])(pRVar2);
          var_9 = (char)iVar10;
        }
        else {
          iVar10 = (*var_8)(pRVar2);
          var_9 = (char)iVar10;
        }
        end._0_4_ = *(type_7 *)(var_4 + var_5 + 8);
        var_10 = *(type_7 *)((int)(var_4 + var_5 + 8) + 4);
        end._4_4_ = var_10;
        if (var_9 != '\0') {
          end._4_4_ = (type_7)end >> 0x18 | ((type_7)end & 0xff0000) >> 8 | ((type_7)end & 0xff00) << 8 |
                      (type_7)end << 0x18;
          end._0_4_ = var_10 >> 0x18 | (var_10 & 0xff0000) >> 8 | (var_10 & 0xff00) << 8 |
                      var_10 << 0x18;
        }
      }
      if (this->ranges_reloc_mapper_ == (type_11 *)0x0) {
        if (start._4_4_ == 0 && (type_7)start == 0) {
          if (end._4_4_ == 0 && (type_7)end == 0) {
            return this_00;
          }
        }
        else if ((start._4_4_ & (type_7)start) == 0xffffffff) {
          var_11 = (type_7)end;
          var_12 = end._4_4_;
          goto LAB_00052880;
        }
LAB_0005295f:
        var_10 = 0;
LAB_00052961:
        local_30.start._0_4_ = (type_7)start + var_11;
        local_30.start._4_4_ = start._4_4_ + var_12 + (type_7)var_13((type_7)start,var_11);
        local_30.end._0_4_ = (type_7)end + var_11;
        local_30.end._4_4_ = end._4_4_ + var_12 + (type_7)var_13((type_7)end,var_11);
        __position._M_current =
             (this_00->range_list_).
             super__Vector_base<var_18::type_6::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>
             ._M_impl._M_finish;
        local_30.shndx = var_10;
        if (__position._M_current ==
            (this_00->range_list_).
            super__Vector_base<var_18::type_6::type_10,var_19::allocator<var_18::type_6::type_10>var_3>
            ._M_impl._M_end_of_storage) {
          std::vector<var_18::Dwarf_range_list::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>
          ::_M_realloc_insert<var_18::Dwarf_range_list::type_10>
                    ((vector<var_18::Dwarf_range_list::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>
                      *)this_00,__position,&local_30);
        }
        else {
          (__position._M_current)->shndx = var_10;
          *(int *)&(__position._M_current)->start = (int)local_30.start;
          *(int *)((int)&(__position._M_current)->start + 4) = local_30.start._4_4_;
          *(int *)&(__position._M_current)->end = (int)local_30.end;
          *(int *)((int)&(__position._M_current)->end + 4) = local_30.end._4_4_;
          (this_00->range_list_).
          super__Vector_base<var_18::Dwarf_range_list::type_10,var_19::allocator<var_18::Dwarf_range_list::type_10>var_3>
          ._M_impl._M_finish = __position._M_current + 1;
        }
      }
      else {
        var_10 = var_14(this,var_15(var_16,var_5),&start);
        var_17 = var_14(this,var_15(var_16 + (type_7)var_13(var_7,var_5),
                                           var_7 + var_5),&end);
        if (var_10 == 0) {
          if (start._4_4_ == 0 && (type_7)start == 0) {
            if (end._4_4_ == 0 && (type_7)end == 0) {
              return this_00;
            }
LAB_00052b1a:
            if (var_17 != 0) goto LAB_000529f0;
            goto LAB_0005295f;
          }
          if ((start._4_4_ & (type_7)start) != 0xffffffff) goto LAB_00052b1a;
          var_11 = (type_7)end;
          var_12 = end._4_4_;
        }
        else {
          if (var_10 == var_17) {
            ppOVar6 = (object->output_sections_).
                      super__Vector_base<var_18::type_12*,var_19::allocator<var_18::type_12*>var_3>
                      ._M_impl._M_start;
            if ((type_7)((int)(object->output_sections_).
                            super__Vector_base<var_18::type_12*,var_19::allocator<var_18::type_12*>var_3>
                            ._M_impl._M_finish - (int)ppOVar6 >> 2) <= var_10) {
                    /* WARNING: Subroutine does not return */
              var_20("../../gold/object.h",0x50b,"is_section_included");
            }
            if (ppOVar6[var_10] == (type_12 *)0x0) goto LAB_00052880;
            goto LAB_00052961;
          }
LAB_000529f0:
          pcVar5 = (object->super_Object).name_._M_dataplus._M_p;
          format = (char *)var_21(
                                  "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"
                                  );
          var_22(format,pcVar5);
        }
      }
LAB_00052880:
      bVar7 = var_13(var_5,var_7 * 2);
      var_5 = var_5 + var_7 * 2;
      var_16 = var_16 + (type_7)bVar7;
      var_6 = (type_7 *)(this->ranges_buffer_ + var_5);
    } while (var_6 < this->ranges_buffer_end_);
  }
  return this_00;
}


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

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

{
  code *pcVar1;
  int iVar2;
  int *piVar3;
  code *pcVar4;
  undefined4 uVar5;
  char cVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 uVar9;
  uint uVar10;
  uint *puVar11;
  int unaff_EBP;
  int iVar12;
  uint uVar13;
  uint local_5c;
  uint local_58;
  uint local_44;
  uint local_40;
  uint local_3c;
  uint local_38;
  uint local_30;
  uint local_2c;
  uint local_28;
  uint local_24;
  uint local_20;
  
  FUN_0004fb82();
  cVar6 = FUN_0004fde0(param_1,param_2,param_3,param_4,param_5,param_7);
  if (cVar6 == '\0') {
    return (undefined4 *)0x0;
  }
  uVar10 = param_8 - param_1[7];
  iVar12 = (param_9 - param_1[8]) - (uint)(param_8 < (uint)param_1[7]);
  puVar7 = (undefined4 *)FUN_0017ebf0(0xc);
  iVar2 = param_1[2];
  *puVar7 = 0;
  puVar11 = (uint *)(iVar2 + uVar10);
  puVar7[1] = 0;
  puVar7[2] = 0;
  if (puVar11 < (uint *)param_1[3]) {
    pcVar1 = (code *)(unaff_EBP + -0x1b4f6);
    local_5c = 0;
    local_58 = 0;
    do {
      piVar3 = *(int **)(*param_1 + 8);
      iVar2 = *piVar3;
      pcVar4 = *(code **)(iVar2 + 0xc);
      uVar13 = uVar10;
      if (param_6 == 4) {
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        iVar2 = param_1[2];
        local_44 = *puVar11;
        local_40 = 0;
        if (cVar6 != '\0') {
          local_44 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |
                     local_44 << 0x18;
        }
        piVar3 = *(int **)(*param_1 + 8);
        pcVar4 = *(code **)(*piVar3 + 0xc);
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        local_3c = *(uint *)(iVar2 + 4 + uVar10);
        local_38 = 0;
        if (cVar6 != '\0') {
          local_3c = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |
                     local_3c << 0x18;
        }
      }
      else {
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(iVar2 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        local_44 = *puVar11;
        uVar8 = puVar11[1];
        local_40 = uVar8;
        if (cVar6 != '\0') {
          local_40 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |
                     local_44 << 0x18;
          local_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18
          ;
        }
        puVar11 = (uint *)(param_1[2] + 8 + uVar10);
        piVar3 = *(int **)(*param_1 + 8);
        pcVar4 = *(code **)(*piVar3 + 0xc);
        if (pcVar4 == pcVar1) {
          cVar6 = (**(code **)(*piVar3 + 0xe8))(piVar3);
        }
        else {
          cVar6 = (*pcVar4)(piVar3);
        }
        local_3c = *puVar11;
        uVar10 = puVar11[1];
        local_38 = uVar10;
        if (cVar6 != '\0') {
          local_38 = local_3c >> 0x18 | (local_3c & 0xff0000) >> 8 | (local_3c & 0xff00) << 8 |
                     local_3c << 0x18;
          local_3c = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |
                     uVar10 << 0x18;
        }
      }
      if (param_1[5] == 0) {
        if (local_40 == 0 && local_44 == 0) {
          if (local_38 == 0 && local_3c == 0) {
            return puVar7;
          }
        }
        else if ((local_40 & local_44) == 0xffffffff) {
          local_5c = local_3c;
          local_58 = local_38;
          goto LAB_00052880;
        }
LAB_0005295f:
        uVar10 = 0;
LAB_00052961:
        local_2c = local_44 + local_5c;
        local_28 = local_40 + local_58 + (uint)CARRY4(local_44,local_5c);
        local_24 = local_3c + local_5c;
        local_20 = local_38 + local_58 + (uint)CARRY4(local_3c,local_5c);
        puVar11 = (uint *)puVar7[1];
        local_30 = uVar10;
        if (puVar11 == (uint *)puVar7[2]) {
          FUN_00054df0(puVar7,puVar11,&local_30);
        }
        else {
          *puVar11 = uVar10;
          puVar11[1] = local_2c;
          puVar11[2] = local_28;
          puVar11[3] = local_24;
          puVar11[4] = local_20;
          puVar7[1] = puVar11 + 5;
        }
      }
      else {
        uVar10 = FUN_00050290(param_1,uVar13,iVar12,&local_44);
        uVar8 = FUN_00050290(param_1,param_6 + uVar13,iVar12 + (uint)CARRY4(param_6,uVar13),
                             &local_3c);
        if (uVar10 == 0) {
          if (local_40 == 0 && local_44 == 0) {
            if (local_38 == 0 && local_3c == 0) {
              return puVar7;
            }
LAB_00052b1a:
            if (uVar8 != 0) goto LAB_000529f0;
            goto LAB_0005295f;
          }
          if ((local_40 & local_44) != 0xffffffff) goto LAB_00052b1a;
          local_5c = local_3c;
          local_58 = local_38;
        }
        else {
          if (uVar10 == uVar8) {
            if ((uint)(*(int *)(param_2 + 0x3c) - *(int *)(param_2 + 0x38) >> 2) <= uVar10) {
                    /* WARNING: Subroutine does not return */
              FUN_0005f0b0(unaff_EBP + 0x1c78f4,0x50b,unaff_EBP + 0x1ce062,uVar10,uVar13,iVar12,
                           *(int *)(param_2 + 0x3c));
            }
            if (*(int *)(*(int *)(param_2 + 0x38) + uVar10 * 4) == 0) goto LAB_00052880;
            goto LAB_00052961;
          }
LAB_000529f0:
          uVar5 = *(undefined4 *)(param_2 + 4);
          uVar9 = gettext(unaff_EBP + 0x1cde3e);
          FUN_0005ad30(uVar9,uVar5);
        }
      }
LAB_00052880:
      uVar10 = uVar13 + param_6 * 2;
      iVar12 = iVar12 + (uint)CARRY4(uVar13,param_6 * 2);
      puVar11 = (uint *)(param_1[2] + uVar10);
    } while (puVar11 < (uint *)param_1[3]);
  }
  return puVar7;
}

