
/* DWARF original prototype: uint64_t output_address(Output_section * this, Relobj * object, uint
   shndx, off_t offset) */

uint64_t __thiscall
gold::Output_section::output_address(Output_section *this,Relobj *object,uint shndx,off_t offset)

{
  long lVar1;
  int iVar2;
  Output_relaxed_input_section *pOVar3;
  size_type sVar4;
  uint64_t uVar5;
  undefined4 extraout_var;
  uint uVar6;
  uint uVar7;
  Relobj *this_00;
  _func_int_varargs **pp_Var8;
  section_offset_type sVar9;
  pointer pIVar10;
  ulong uVar11;
  section_offset_type output_offset;
  
  if (((this->super_Output_data).field_0x20 & 1) != 0) {
    uVar5 = (this->super_Output_data).address_;
    lVar1 = this->first_input_offset_;
    pOVar3 = (Output_relaxed_input_section *)Relobj::find_merge_section(object,shndx);
    if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&
        (pOVar3 = find_relaxed_input_section(this,object,shndx),
        pOVar3 == (Output_relaxed_input_section *)0x0)) ||
       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.
         field_0x20 & 1) == 0)) {
      pIVar10 = (this->input_sections_).
                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
                ._M_impl._M_start;
      if (pIVar10 !=
          (this->input_sections_).
          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
          ._M_impl._M_finish) {
        uVar11 = lVar1 + uVar5;
        do {
          uVar6 = pIVar10->shndx_;
          uVar7 = uVar6 + 4;
          if (pIVar10->p2align_ == 0) {
            if (3 < uVar7) goto LAB_001fbfc0;
            this_00 = (Relobj *)(pIVar10->u2_).posd;
            pp_Var8 = (this_00->super_Object)._vptr_Object;
            if (pp_Var8[3] != Output_section_data::do_addralign) {
              iVar2 = (*pp_Var8[3])();
              uVar5 = CONCAT44(extraout_var,iVar2);
              uVar6 = pIVar10->shndx_;
              uVar7 = uVar6 + 4;
              goto LAB_001fbfb1;
            }
            uVar5 = (this_00->super_Object).offset_;
            if (uVar5 != 0) goto LAB_001fbf2d;
LAB_001fbf4b:
            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);
            sVar9 = output_offset;
            if ((char)iVar2 != '\0') {
LAB_001fbfe5:
              uVar5 = 0xffffffffffffffff;
              if (sVar9 != -1) {
                uVar5 = sVar9 + uVar11;
              }
              return uVar5;
            }
            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;
            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {
                    /* WARNING: Subroutine does not return */
              Input_section::data_size((Input_section *)this_00);
            }
            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;
          }
          else {
            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);
LAB_001fbfb1:
            if (uVar5 != 0) {
LAB_001fbf2d:
              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;
            }
            if (uVar7 < 4) {
              this_00 = (pIVar10->u2_).object;
              pp_Var8 = (this_00->super_Object)._vptr_Object;
              goto LAB_001fbf4b;
            }
LAB_001fbfc0:
            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))
            goto LAB_001fbfe5;
LAB_001fbfca:
            sVar4 = (pIVar10->u1_).data_size;
          }
          uVar11 = uVar11 + sVar4;
          pIVar10 = pIVar10 + 1;
        } while ((this->input_sections_).
                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
                 ._M_impl._M_finish != pIVar10);
      }
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");
    }
    iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.
              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);
    if ((char)iVar2 == '\0') {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");
    }
    if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.
         field_0x20 & 1) != 0) {
      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.
             address_ + output_offset;
    }
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xc5,"address");
}



long FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)

{
  char cVar1;
  long *plVar2;
  long lVar3;
  long lVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  ulong uVar8;
  long local_40 [2];
  
  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {
    lVar3 = *(long *)(param_1 + 8);
    lVar4 = *(long *)(param_1 + 0xa0);
    plVar2 = (long *)FUN_001bd440(param_2,param_3);
    if (((plVar2 == (long *)0x0) &&
        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||
       ((*(byte *)(plVar2 + 4) & 1) == 0)) {
      piVar7 = *(int **)(param_1 + 0x88);
      if (piVar7 != *(int **)(param_1 + 0x90)) {
        uVar8 = lVar4 + lVar3;
        do {
          iVar5 = *piVar7;
          uVar6 = iVar5 + 4;
          if (piVar7[1] == 0) {
            if (3 < uVar6) goto LAB_001fbfc0;
            plVar2 = *(long **)(piVar7 + 4);
            lVar3 = *plVar2;
            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {
              lVar4 = (**(code **)(lVar3 + 0x18))();
              iVar5 = *piVar7;
              uVar6 = iVar5 + 4;
              goto LAB_001fbfb1;
            }
            lVar4 = plVar2[6];
            if (lVar4 != 0) goto LAB_001fbf2d;
LAB_001fbf4b:
            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);
            lVar3 = local_40[0];
            if (cVar1 != '\0') {
LAB_001fbfe5:
              lVar4 = -1;
              if (lVar3 != -1) {
                lVar4 = lVar3 + uVar8;
              }
              return lVar4;
            }
            if (3 < *piVar7 + 4U) goto LAB_001fbfca;
            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
              FUN_001f48c0();
            }
            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);
          }
          else {
            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);
LAB_001fbfb1:
            if (lVar4 != 0) {
LAB_001fbf2d:
              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;
            }
            if (uVar6 < 4) {
              plVar2 = *(long **)(piVar7 + 4);
              lVar3 = *plVar2;
              goto LAB_001fbf4b;
            }
LAB_001fbfc0:
            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))
            goto LAB_001fbfe5;
LAB_001fbfca:
            lVar3 = *(long *)(piVar7 + 2);
          }
          uVar8 = uVar8 + lVar3;
          piVar7 = piVar7 + 8;
        } while (*(int **)(param_1 + 0x90) != piVar7);
      }
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");
    }
    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);
    if (cVar1 == '\0') {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");
    }
    if ((*(byte *)(plVar2 + 4) & 1) != 0) {
      return plVar2[1] + local_40[0];
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.h",0xc5,"address");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
TEST byte ptr [RDI + 0x20],0x1
JZ 0x001fc095
MOV R12,RSI
MOV R14,qword ptr [RDI + 0x8]
MOV R15,qword ptr [RDI + 0xa0]
MOV ESI,EDX
MOV RBX,RDI
MOV RDI,R12
MOV EBP,EDX
MOV R13,RCX
CALL 0x001bd440
MOV R9,RAX
TEST RAX,RAX
JZ 0x001fc056
TEST byte ptr [R9 + 0x20],0x1
JNZ 0x001fc010
MOV R9,qword ptr [RBX + 0x88]
CMP R9,qword ptr [RBX + 0x90]
JZ 0x001fc078
LEA RAX,[RSP + 0x18]
ADD R15,R14
MOV R14,R9
MOV qword ptr [RSP + 0x8],RAX
JMP 0x001fbf94
CMP ESI,0x3
JA 0x001fbfc0
MOV RDI,qword ptr [R14 + 0x10]
LEA RCX,[0x185200]
MOV R11,qword ptr [RDI]
MOV RAX,qword ptr [R11 + 0x18]
CMP RAX,RCX
JNZ 0x001fbfd0
MOV RAX,qword ptr [RDI + 0x30]
TEST RAX,RAX
JZ 0x001fbf4b
LEA R10,[R15 + RAX*0x1 + -0x1]
NEG RAX
AND R10,RAX
MOV R15,R10
CMP ESI,0x3
JA 0x001fbfc0
MOV RDI,qword ptr [R14 + 0x10]
MOV R11,qword ptr [RDI]
MOV R8,qword ptr [RSP + 0x8]
MOV RCX,R13
MOV EDX,EBP
MOV RSI,R12
CALL qword ptr [R11 + 0xb0]
TEST AL,AL
JNZ 0x001fbfe0
MOV EAX,dword ptr [R14]
ADD EAX,0x4
CMP EAX,0x3
JA 0x001fbfca
MOV RAX,qword ptr [R14 + 0x10]
TEST byte ptr [RAX + 0x20],0x2
JZ 0x001fc090
MOV RAX,qword ptr [RAX + 0x10]
ADD R15,RAX
ADD R14,0x20
CMP qword ptr [RBX + 0x90],R14
JZ 0x001fc078
MOV EDX,dword ptr [R14]
MOV ECX,dword ptr [R14 + 0x4]
LEA ESI,[RDX + 0x4]
TEST ECX,ECX
JZ 0x001fbf00
SUB ECX,0x1
MOV EAX,0x1
SHL RAX,CL
TEST RAX,RAX
JNZ 0x001fbf2d
CMP ESI,0x3
JBE 0x001fbf44
NOP
CMP EBP,EDX
JNZ 0x001fbfca
CMP R12,qword ptr [R14 + 0x10]
JZ 0x001fbfe5
MOV RAX,qword ptr [R14 + 0x8]
JMP 0x001fbf80
CALL RAX
MOV EDX,dword ptr [R14]
LEA ESI,[RDX + 0x4]
JMP 0x001fbfb1
MOV R13,qword ptr [RSP + 0x18]
LEA R10,[R13 + R15*0x1]
CMP R13,-0x1
MOV RAX,-0x1
CMOVNZ RAX,R10
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [R9]
MOV RDI,R9
MOV qword ptr [RSP + 0x8],R9
LEA R8,[RSP + 0x18]
MOV RCX,R13
MOV EDX,EBP
MOV RSI,R12
CALL qword ptr [RAX + 0xb0]
MOV R9,qword ptr [RSP + 0x8]
TEST AL,AL
JZ 0x001fc0ad
TEST byte ptr [R9 + 0x20],0x1
JZ 0x001fc095
MOV RAX,qword ptr [R9 + 0x8]
ADD RAX,qword ptr [RSP + 0x18]
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,EBP
MOV RSI,R12
MOV RDI,RBX
CALL 0x001fbb90
MOV R9,RAX
TEST RAX,RAX
JZ 0x001fbecf
JMP 0x001fbec4
LEA RDX,[0x3804b8]
MOV ESI,0xc1b
LEA RDI,[0x37e8cf]
CALL 0x0017c650
CALL 0x001f48c0
LEA RDX,[0x380d68]
MOV ESI,0xc5
LEA RDI,[0x373454]
CALL 0x0017c650
LEA RDX,[0x3804b8]
MOV ESI,0xc02
LEA RDI,[0x37e8cf]
CALL 0x0017c650
(translation_unit "long FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)\n\n{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}\n\n" (function_definition "long FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)\n\n{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)" identifier (parameter_list "(long param_1,long param_2,int param_3,long param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 1" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }" { (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0xa0);" (assignment_expression "lVar4 = *(long *)(param_1 + 0xa0)" identifier = (pointer_expression "*(long *)(param_1 + 0xa0)" * (cast_expression "(long *)(param_1 + 0xa0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "plVar2 = (long *)FUN_001bd440(param_2,param_3);" (assignment_expression "plVar2 = (long *)FUN_001bd440(param_2,param_3)" identifier = (cast_expression "(long *)FUN_001bd440(param_2,param_3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001bd440(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))))) ;) (if_statement "if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }" if (parenthesized_expression "(((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0))" ( (binary_expression "((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)" (parenthesized_expression "((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0))" ( (binary_expression "(plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)" (parenthesized_expression "(plVar2 == (long *)0x0)" ( (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)" ( (comma_expression "plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0" (assignment_expression "plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3)" identifier = (cast_expression "(long *)FUN_001fbb90(param_1,param_2,param_3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fbb90(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))))) , (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) || (parenthesized_expression "((*(byte *)(plVar2 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar2 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar2 + 4) & 1)" ( (binary_expression "*(byte *)(plVar2 + 4) & 1" (pointer_expression "*(byte *)(plVar2 + 4)" * (cast_expression "(byte *)(plVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar2 + 4)" ( (binary_expression "plVar2 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }" { (expression_statement "piVar7 = *(int **)(param_1 + 0x88);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x88)" identifier = (pointer_expression "*(int **)(param_1 + 0x88)" * (cast_expression "(int **)(param_1 + 0x88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }" if (parenthesized_expression "(piVar7 != *(int **)(param_1 + 0x90))" ( (binary_expression "piVar7 != *(int **)(param_1 + 0x90)" identifier != (pointer_expression "*(int **)(param_1 + 0x90)" * (cast_expression "(int **)(param_1 + 0x90)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }" { (expression_statement "uVar8 = lVar4 + lVar3;" (assignment_expression "uVar8 = lVar4 + lVar3" identifier = (binary_expression "lVar4 + lVar3" identifier + identifier)) ;) (do_statement "do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);" do (compound_statement "{\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        }" { (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "uVar6 = iVar5 + 4;" (assignment_expression "uVar6 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (if_statement "if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" if (parenthesized_expression "(piVar7[1] == 0)" ( (binary_expression "piVar7[1] == 0" (subscript_expression "piVar7[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }" { (if_statement "if (3 < uVar6) goto LAB_001fbfc0;" if (parenthesized_expression "(3 < uVar6)" ( (binary_expression "3 < uVar6" number_literal < identifier) )) (goto_statement "goto LAB_001fbfc0;" goto statement_identifier ;)) (expression_statement "plVar2 = *(long **)(piVar7 + 4);" (assignment_expression "plVar2 = *(long **)(piVar7 + 4)" identifier = (pointer_expression "*(long **)(piVar7 + 4)" * (cast_expression "(long **)(piVar7 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }" if (parenthesized_expression "(*(code **)(lVar3 + 0x18) != FUN_00185200)" ( (binary_expression "*(code **)(lVar3 + 0x18) != FUN_00185200" (pointer_expression "*(code **)(lVar3 + 0x18)" * (cast_expression "(code **)(lVar3 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }" { (expression_statement "lVar4 = (**(code **)(lVar3 + 0x18))();" (assignment_expression "lVar4 = (**(code **)(lVar3 + 0x18))()" identifier = (call_expression "(**(code **)(lVar3 + 0x18))()" (parenthesized_expression "(**(code **)(lVar3 + 0x18))" ( (pointer_expression "**(code **)(lVar3 + 0x18)" * (pointer_expression "*(code **)(lVar3 + 0x18)" * (cast_expression "(code **)(lVar3 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "uVar6 = iVar5 + 4;" (assignment_expression "uVar6 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (goto_statement "goto LAB_001fbfb1;" goto statement_identifier ;) })) (expression_statement "lVar4 = plVar2[6];" (assignment_expression "lVar4 = plVar2[6]" identifier = (subscript_expression "plVar2[6]" identifier [ number_literal ])) ;) (if_statement "if (lVar4 != 0) goto LAB_001fbf2d;" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001fbf2d;" goto statement_identifier ;)) (labeled_statement "LAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" statement_identifier : (expression_statement "cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (assignment_expression "cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" identifier = (call_expression "(**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (parenthesized_expression "(**(code **)(lVar3 + 0xb0))" ( (pointer_expression "**(code **)(lVar3 + 0xb0)" * (pointer_expression "*(code **)(lVar3 + 0xb0)" * (cast_expression "(code **)(lVar3 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0xb0)" ( (binary_expression "lVar3 + 0xb0" identifier + number_literal) ))))) )) (argument_list "(plVar2,param_2,param_3,param_4,local_40)" ( identifier , identifier , identifier , identifier , identifier )))) ;)) (expression_statement "lVar3 = local_40[0];" (assignment_expression "lVar3 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }" { (labeled_statement "LAB_001fbfe5:\n              lVar4 = -1;" statement_identifier : (expression_statement "lVar4 = -1;" (assignment_expression "lVar4 = -1" identifier = number_literal) ;)) (if_statement "if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }" if (parenthesized_expression "(lVar3 != -1)" ( (binary_expression "lVar3 != -1" identifier != number_literal) )) (compound_statement "{\n                lVar4 = lVar3 + uVar8;\n              }" { (expression_statement "lVar4 = lVar3 + uVar8;" (assignment_expression "lVar4 = lVar3 + uVar8" identifier = (binary_expression "lVar3 + uVar8" identifier + identifier)) ;) })) (return_statement "return lVar4;" return identifier ;) })) (if_statement "if (3 < *piVar7 + 4U) goto LAB_001fbfca;" if (parenthesized_expression "(3 < *piVar7 + 4U)" ( (binary_expression "3 < *piVar7 + 4U" number_literal < (binary_expression "*piVar7 + 4U" (pointer_expression "*piVar7" * identifier) + number_literal)) )) (goto_statement "goto LAB_001fbfca;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }" if (parenthesized_expression "((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2)" ( (binary_expression "*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2" (pointer_expression "*(byte *)(*(long *)(piVar7 + 4) + 0x20)" * (cast_expression "(byte *)(*(long *)(piVar7 + 4) + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(piVar7 + 4) + 0x20)" ( (binary_expression "*(long *)(piVar7 + 4) + 0x20" (pointer_expression "*(long *)(piVar7 + 4)" * (cast_expression "(long *)(piVar7 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              FUN_001f48c0();\n            }" { comment (expression_statement "FUN_001f48c0();" (call_expression "FUN_001f48c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(piVar7 + 4) + 0x10)" * (cast_expression "(long *)(*(long *)(piVar7 + 4) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(piVar7 + 4) + 0x10)" ( (binary_expression "*(long *)(piVar7 + 4) + 0x10" (pointer_expression "*(long *)(piVar7 + 4)" * (cast_expression "(long *)(piVar7 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" else (compound_statement "{\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" { (expression_statement "lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);" (assignment_expression "lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f)" identifier = (binary_expression "1L << ((char)piVar7[1] - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)piVar7[1] - 1U & 0x3f)" ( (binary_expression "(char)piVar7[1] - 1U & 0x3f" (binary_expression "(char)piVar7[1] - 1U" (cast_expression "(char)piVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) - number_literal) & number_literal) )))) ;) (labeled_statement "LAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" statement_identifier : (if_statement "if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" { (labeled_statement "LAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;" statement_identifier : (expression_statement "uVar8 = (uVar8 - 1) + lVar4 & -lVar4;" (assignment_expression "uVar8 = (uVar8 - 1) + lVar4 & -lVar4" identifier = (binary_expression "(uVar8 - 1) + lVar4 & -lVar4" (binary_expression "(uVar8 - 1) + lVar4" (parenthesized_expression "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-lVar4" - identifier))) ;)) }))) (if_statement "if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }" if (parenthesized_expression "(uVar6 < 4)" ( (binary_expression "uVar6 < 4" identifier < number_literal) )) (compound_statement "{\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }" { (expression_statement "plVar2 = *(long **)(piVar7 + 4);" (assignment_expression "plVar2 = *(long **)(piVar7 + 4)" identifier = (pointer_expression "*(long **)(piVar7 + 4)" * (cast_expression "(long **)(piVar7 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (goto_statement "goto LAB_001fbf4b;" goto statement_identifier ;) })) (labeled_statement "LAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;" statement_identifier : (if_statement "if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;" if (parenthesized_expression "((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))" ( (binary_expression "(param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4))" (parenthesized_expression "(param_3 == iVar5)" ( (binary_expression "param_3 == iVar5" identifier == identifier) )) && (parenthesized_expression "(lVar3 = param_4, param_2 == *(long *)(piVar7 + 4))" ( (comma_expression "lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)" (assignment_expression "lVar3 = param_4" identifier = identifier) , (binary_expression "param_2 == *(long *)(piVar7 + 4)" identifier == (pointer_expression "*(long *)(piVar7 + 4)" * (cast_expression "(long *)(piVar7 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))))) ))) )) (goto_statement "goto LAB_001fbfe5;" goto statement_identifier ;))) (labeled_statement "LAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);" statement_identifier : (expression_statement "lVar3 = *(long *)(piVar7 + 2);" (assignment_expression "lVar3 = *(long *)(piVar7 + 2)" identifier = (pointer_expression "*(long *)(piVar7 + 2)" * (cast_expression "(long *)(piVar7 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 2)" ( (binary_expression "piVar7 + 2" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar8 = uVar8 + lVar3;" (assignment_expression "uVar8 = uVar8 + lVar3" identifier = (binary_expression "uVar8 + lVar3" identifier + identifier)) ;) (expression_statement "piVar7 = piVar7 + 8;" (assignment_expression "piVar7 = piVar7 + 8" identifier = (binary_expression "piVar7 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(int **)(param_1 + 0x90) != piVar7)" ( (binary_expression "*(int **)(param_1 + 0x90) != piVar7" (pointer_expression "*(int **)(param_1 + 0x90)" * (cast_expression "(int **)(param_1 + 0x90)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) != identifier) )) ;) })) comment (expression_statement "FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");" (call_expression "FUN_0017c650("../../gold/output.cc",0xc1b,"output_address")" identifier (argument_list "("../../gold/output.cc",0xc1b,"output_address")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""output_address"" " string_content ") ))) ;) })) (expression_statement "cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (assignment_expression "cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" identifier = (call_expression "(**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (parenthesized_expression "(**(code **)(*plVar2 + 0xb0))" ( (pointer_expression "**(code **)(*plVar2 + 0xb0)" * (pointer_expression "*(code **)(*plVar2 + 0xb0)" * (cast_expression "(code **)(*plVar2 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0xb0)" ( (binary_expression "*plVar2 + 0xb0" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(plVar2,param_2,param_3,param_4,local_40)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/output.cc",0xc02,"output_address");" (call_expression "FUN_0017c650("../../gold/output.cc",0xc02,"output_address")" identifier (argument_list "("../../gold/output.cc",0xc02,"output_address")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""output_address"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }" if (parenthesized_expression "((*(byte *)(plVar2 + 4) & 1) != 0)" ( (binary_expression "(*(byte *)(plVar2 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(plVar2 + 4) & 1)" ( (binary_expression "*(byte *)(plVar2 + 4) & 1" (pointer_expression "*(byte *)(plVar2 + 4)" * (cast_expression "(byte *)(plVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar2 + 4)" ( (binary_expression "plVar2 + 4" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return plVar2[1] + local_40[0];\n    }" { (return_statement "return plVar2[1] + local_40[0];" return (binary_expression "plVar2[1] + local_40[0]" (subscript_expression "plVar2[1]" identifier [ number_literal ]) + (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) })) comment (expression_statement "FUN_0017c650("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0017c650("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: uint64_t output_address(Output_section * this, Relobj * object, uint\n   shndx, off_t offset) */\n\nuint64_t __thiscall\ngold::Output_section::output_address(Output_section *this,Relobj *object,uint shndx,off_t offset)\n\n{\n  long lVar1;\n  int iVar2;\n  Output_relaxed_input_section *pOVar3;\n  size_type sVar4;\n  uint64_t uVar5;\n  undefined4 extraout_var;\n  uint uVar6;\n  uint uVar7;\n  Relobj *this_00;\n  _func_int_varargs **pp_Var8;\n  section_offset_type sVar9;\n  pointer pIVar10;\n  ulong uVar11;\n  section_offset_type output_offset;\n  \n  if (((this->super_Output_data).field_0x20 & 1) != 0) {\n    uVar5 = (this->super_Output_data).address_;\n    lVar1 = this->first_input_offset_;\n    pOVar3 = (Output_relaxed_input_section *)Relobj::find_merge_section(object,shndx);\n    if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)) {\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }\n    iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);\n    if ((char)iVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }\n    if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0) {\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xc5,"address");\n}\n\n" comment (function_definition "uint64_t __thiscall\ngold::Output_section::output_address(Output_section *this,Relobj *object,uint shndx,off_t offset)\n\n{\n  long lVar1;\n  int iVar2;\n  Output_relaxed_input_section *pOVar3;\n  size_type sVar4;\n  uint64_t uVar5;\n  undefined4 extraout_var;\n  uint uVar6;\n  uint uVar7;\n  Relobj *this_00;\n  _func_int_varargs **pp_Var8;\n  section_offset_type sVar9;\n  pointer pIVar10;\n  ulong uVar11;\n  section_offset_type output_offset;\n  \n  if (((this->super_Output_data).field_0x20 & 1) != 0) {\n    uVar5 = (this->super_Output_data).address_;\n    lVar1 = this->first_input_offset_;\n    pOVar3 = (Output_relaxed_input_section *)Relobj::find_merge_section(object,shndx);\n    if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)) {\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }\n    iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);\n    if ((char)iVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }\n    if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0) {\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xc5,"address");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "output_address(Output_section *this,Relobj *object,uint shndx,off_t offset)" identifier (parameter_list "(Output_section *this,Relobj *object,uint shndx,off_t offset)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "off_t offset" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  Output_relaxed_input_section *pOVar3;\n  size_type sVar4;\n  uint64_t uVar5;\n  undefined4 extraout_var;\n  uint uVar6;\n  uint uVar7;\n  Relobj *this_00;\n  _func_int_varargs **pp_Var8;\n  section_offset_type sVar9;\n  pointer pIVar10;\n  ulong uVar11;\n  section_offset_type output_offset;\n  \n  if (((this->super_Output_data).field_0x20 & 1) != 0) {\n    uVar5 = (this->super_Output_data).address_;\n    lVar1 = this->first_input_offset_;\n    pOVar3 = (Output_relaxed_input_section *)Relobj::find_merge_section(object,shndx);\n    if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)) {\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }\n    iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);\n    if ((char)iVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }\n    if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0) {\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xc5,"address");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Output_relaxed_input_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "size_type sVar4;" type_identifier identifier ;) (declaration "uint64_t uVar5;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "Relobj *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "_func_int_varargs **pp_Var8;" type_identifier (pointer_declarator "**pp_Var8" * (pointer_declarator "*pp_Var8" * identifier)) ;) (declaration "section_offset_type sVar9;" type_identifier identifier ;) (declaration "pointer pIVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "section_offset_type output_offset;" type_identifier identifier ;) (if_statement "if (((this->super_Output_data).field_0x20 & 1) != 0) {\n    uVar5 = (this->super_Output_data).address_;\n    lVar1 = this->first_input_offset_;\n    pOVar3 = (Output_relaxed_input_section *)Relobj::find_merge_section(object,shndx);\n    if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)) {\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }\n    iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);\n    if ((char)iVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }\n    if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0) {\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }\n  }" if (parenthesized_expression "(((this->super_Output_data).field_0x20 & 1) != 0)" ( (binary_expression "((this->super_Output_data).field_0x20 & 1) != 0" (parenthesized_expression "((this->super_Output_data).field_0x20 & 1)" ( (binary_expression "(this->super_Output_data).field_0x20 & 1" (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar5 = (this->super_Output_data).address_;\n    lVar1 = this->first_input_offset_;\n    pOVar3 = (Output_relaxed_input_section *)Relobj::find_merge_section(object,shndx);\n    if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)) {\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }\n    iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);\n    if ((char)iVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }\n    if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0) {\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }\n  }" { (expression_statement "uVar5 = (this->super_Output_data).address_;" (assignment_expression "uVar5 = (this->super_Output_data).address_" identifier = (field_expression "(this->super_Output_data).address_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lVar1 = this->first_input_offset_;" (assignment_expression "lVar1 = this->first_input_offset_" identifier = (field_expression "this->first_input_offset_" identifier -> field_identifier)) ;) (ERROR "pOVar3 = (Output_relaxed_input_section *)Relobj::" (assignment_expression "pOVar3 = (Output_relaxed_input_section *)Relobj" identifier = (cast_expression "(Output_relaxed_input_section *)Relobj" ( (type_descriptor "Output_relaxed_input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "find_merge_section(object,shndx);" (call_expression "find_merge_section(object,shndx)" identifier (argument_list "(object,shndx)" ( identifier , identifier ))) ;) (if_statement "if (((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)) {\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }" if (parenthesized_expression "(((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0))" ( (binary_expression "((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)) ||\n       (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)" (parenthesized_expression "((pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0))" ( (binary_expression "(pOVar3 == (Output_relaxed_input_section *)0x0) &&\n        (pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)" (parenthesized_expression "(pOVar3 == (Output_relaxed_input_section *)0x0)" ( (binary_expression "pOVar3 == (Output_relaxed_input_section *)0x0" identifier == (cast_expression "(Output_relaxed_input_section *)0x0" ( (type_descriptor "Output_relaxed_input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0)" ( (comma_expression "pOVar3 = find_relaxed_input_section(this,object,shndx),\n        pOVar3 == (Output_relaxed_input_section *)0x0" (assignment_expression "pOVar3 = find_relaxed_input_section(this,object,shndx)" identifier = (call_expression "find_relaxed_input_section(this,object,shndx)" identifier (argument_list "(this,object,shndx)" ( identifier , identifier , identifier )))) , (binary_expression "pOVar3 == (Output_relaxed_input_section *)0x0" identifier == (cast_expression "(Output_relaxed_input_section *)0x0" ( (type_descriptor "Output_relaxed_input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) || (parenthesized_expression "(((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0)" ( (binary_expression "((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) == 0" (parenthesized_expression "((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1)" ( (binary_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar3->super_Output_section_data_build)" ( (field_expression "pOVar3->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;\n      if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");\n    }" { (ERROR "pIVar10 = (this->input_sections_).\n                super__Vector_base<gold::" (assignment_expression "pIVar10 = (this->input_sections_).\n                super__Vector_base<gold" identifier = (binary_expression "(this->input_sections_).\n                super__Vector_base<gold" (field_expression "(this->input_sections_).\n                super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                ._M_impl._M_start;" statement_identifier (ERROR "::Input_section,_std::allocator<gold:" : : (comma_expression "Input_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section>_>\n                ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Input_section>_>\n                ._M_impl._M_start;" (field_expression "Input_section>_>\n                ._M_impl._M_start" (field_expression "Input_section>_>\n                ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish) {\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }" if (parenthesized_expression "(pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n          ._M_impl._M_finish)" ( (ERROR "pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::" (comma_expression "pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold::Output_section::Input_section,_std" (binary_expression "pIVar10 !=\n          (this->input_sections_).\n          super__Vector_base<gold" identifier != (binary_expression "(this->input_sections_).\n          super__Vector_base<gold" (field_expression "(this->input_sections_).\n          super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section::Input_section" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Input_section>_>\n          ._M_impl._M_finish" (field_expression "Input_section>_>\n          ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n        uVar11 = lVar1 + uVar5;\n        do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);\n      }" { (expression_statement "uVar11 = lVar1 + uVar5;" (assignment_expression "uVar11 = lVar1 + uVar5" identifier = (binary_expression "lVar1 + uVar5" identifier + identifier)) ;) (do_statement "do {\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        } while ((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10);" do (compound_statement "{\n          uVar6 = pIVar10->shndx_;\n          uVar7 = uVar6 + 4;\n          if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }\n          uVar11 = uVar11 + sVar4;\n          pIVar10 = pIVar10 + 1;\n        }" { (expression_statement "uVar6 = pIVar10->shndx_;" (assignment_expression "uVar6 = pIVar10->shndx_" identifier = (field_expression "pIVar10->shndx_" identifier -> field_identifier)) ;) (expression_statement "uVar7 = uVar6 + 4;" (assignment_expression "uVar7 = uVar6 + 4" identifier = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) (if_statement "if (pIVar10->p2align_ == 0) {\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }\n          else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }" if (parenthesized_expression "(pIVar10->p2align_ == 0)" ( (binary_expression "pIVar10->p2align_ == 0" (field_expression "pIVar10->p2align_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            if (3 < uVar7) goto LAB_001fbfc0;\n            this_00 = (Relobj *)(pIVar10->u2_).posd;\n            pp_Var8 = (this_00->super_Object)._vptr_Object;\n            if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }\n            uVar5 = (this_00->super_Object).offset_;\n            if (uVar5 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);\n            sVar9 = output_offset;\n            if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }\n            if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;\n            if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }\n            sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;\n          }" { (if_statement "if (3 < uVar7) goto LAB_001fbfc0;" if (parenthesized_expression "(3 < uVar7)" ( (binary_expression "3 < uVar7" number_literal < identifier) )) (goto_statement "goto LAB_001fbfc0;" goto statement_identifier ;)) (expression_statement "this_00 = (Relobj *)(pIVar10->u2_).posd;" (assignment_expression "this_00 = (Relobj *)(pIVar10->u2_).posd" identifier = (cast_expression "(Relobj *)(pIVar10->u2_).posd" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pIVar10->u2_).posd" (parenthesized_expression "(pIVar10->u2_)" ( (field_expression "pIVar10->u2_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pp_Var8 = (this_00->super_Object)._vptr_Object;" (assignment_expression "pp_Var8 = (this_00->super_Object)._vptr_Object" identifier = (field_expression "(this_00->super_Object)._vptr_Object" (parenthesized_expression "(this_00->super_Object)" ( (field_expression "this_00->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pp_Var8[3] != Output_section_data::do_addralign) {\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }" if (parenthesized_expression "(pp_Var8[3] != Output_section_data::do_addralign)" ( (binary_expression "pp_Var8[3] != Output_section_data" (subscript_expression "pp_Var8[3]" identifier [ number_literal ]) != identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n              iVar2 = (*pp_Var8[3])();\n              uVar5 = CONCAT44(extraout_var,iVar2);\n              uVar6 = pIVar10->shndx_;\n              uVar7 = uVar6 + 4;\n              goto LAB_001fbfb1;\n            }" { (expression_statement "iVar2 = (*pp_Var8[3])();" (assignment_expression "iVar2 = (*pp_Var8[3])()" identifier = (call_expression "(*pp_Var8[3])()" (parenthesized_expression "(*pp_Var8[3])" ( (pointer_expression "*pp_Var8[3]" * (subscript_expression "pp_Var8[3]" identifier [ number_literal ])) )) (argument_list "()" ( )))) ;) (expression_statement "uVar5 = CONCAT44(extraout_var,iVar2);" (assignment_expression "uVar5 = CONCAT44(extraout_var,iVar2)" identifier = (call_expression "CONCAT44(extraout_var,iVar2)" identifier (argument_list "(extraout_var,iVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = pIVar10->shndx_;" (assignment_expression "uVar6 = pIVar10->shndx_" identifier = (field_expression "pIVar10->shndx_" identifier -> field_identifier)) ;) (expression_statement "uVar7 = uVar6 + 4;" (assignment_expression "uVar7 = uVar6 + 4" identifier = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) (goto_statement "goto LAB_001fbfb1;" goto statement_identifier ;) })) (expression_statement "uVar5 = (this_00->super_Object).offset_;" (assignment_expression "uVar5 = (this_00->super_Object).offset_" identifier = (field_expression "(this_00->super_Object).offset_" (parenthesized_expression "(this_00->super_Object)" ( (field_expression "this_00->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (uVar5 != 0) goto LAB_001fbf2d;" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001fbf2d;" goto statement_identifier ;)) (labeled_statement "LAB_001fbf4b:\n            iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);" statement_identifier : (expression_statement "iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset);" (assignment_expression "iVar2 = (*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset)" identifier = (call_expression "(*pp_Var8[0x16])(this_00,object,(ulong)shndx,offset,&output_offset)" (parenthesized_expression "(*pp_Var8[0x16])" ( (pointer_expression "*pp_Var8[0x16]" * (subscript_expression "pp_Var8[0x16]" identifier [ number_literal ])) )) (argument_list "(this_00,object,(ulong)shndx,offset,&output_offset)" ( identifier , identifier , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier , (pointer_expression "&output_offset" & identifier) )))) ;)) (expression_statement "sVar9 = output_offset;" (assignment_expression "sVar9 = output_offset" identifier = identifier) ;) (if_statement "if ((char)iVar2 != '\0') {\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }" if (parenthesized_expression "((char)iVar2 != '\0')" ( (binary_expression "(char)iVar2 != '\0'" (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;\n              if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }\n              return uVar5;\n            }" { (labeled_statement "LAB_001fbfe5:\n              uVar5 = 0xffffffffffffffff;" statement_identifier : (expression_statement "uVar5 = 0xffffffffffffffff;" (assignment_expression "uVar5 = 0xffffffffffffffff" identifier = number_literal) ;)) (if_statement "if (sVar9 != -1) {\n                uVar5 = sVar9 + uVar11;\n              }" if (parenthesized_expression "(sVar9 != -1)" ( (binary_expression "sVar9 != -1" identifier != number_literal) )) (compound_statement "{\n                uVar5 = sVar9 + uVar11;\n              }" { (expression_statement "uVar5 = sVar9 + uVar11;" (assignment_expression "uVar5 = sVar9 + uVar11" identifier = (binary_expression "sVar9 + uVar11" identifier + identifier)) ;) })) (return_statement "return uVar5;" return identifier ;) })) (if_statement "if (3 < pIVar10->shndx_ + 4) goto LAB_001fbfca;" if (parenthesized_expression "(3 < pIVar10->shndx_ + 4)" ( (binary_expression "3 < pIVar10->shndx_ + 4" number_literal < (binary_expression "pIVar10->shndx_ + 4" (field_expression "pIVar10->shndx_" identifier -> field_identifier) + number_literal)) )) (goto_statement "goto LAB_001fbfca;" goto statement_identifier ;)) (if_statement "if (((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }" if (parenthesized_expression "(((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0)" ( (binary_expression "((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0" (parenthesized_expression "((((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U)" ( (binary_expression "(((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8] & 2U" (subscript_expression "(((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf[8]" (field_expression "(((pIVar10->u2_).object)->super_Object).name_.field_2._M_local_buf" (field_expression "(((pIVar10->u2_).object)->super_Object).name_.field_2" (field_expression "(((pIVar10->u2_).object)->super_Object).name_" (parenthesized_expression "(((pIVar10->u2_).object)->super_Object)" ( (field_expression "((pIVar10->u2_).object)->super_Object" (parenthesized_expression "((pIVar10->u2_).object)" ( (field_expression "(pIVar10->u2_).object" (parenthesized_expression "(pIVar10->u2_)" ( (field_expression "pIVar10->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              Input_section::data_size((Input_section *)this_00);\n            }" { comment (labeled_statement "Input_section::data_size((Input_section *)this_00);" statement_identifier : (ERROR ":" :) (expression_statement "data_size((Input_section *)this_00);" (call_expression "data_size((Input_section *)this_00)" identifier (argument_list "((Input_section *)this_00)" ( (cast_expression "(Input_section *)this_00" ( (type_descriptor "Input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (expression_statement "sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length;" (assignment_expression "sVar4 = (((pIVar10->u2_).object)->super_Object).name_._M_string_length" identifier = (field_expression "(((pIVar10->u2_).object)->super_Object).name_._M_string_length" (field_expression "(((pIVar10->u2_).object)->super_Object).name_" (parenthesized_expression "(((pIVar10->u2_).object)->super_Object)" ( (field_expression "((pIVar10->u2_).object)->super_Object" (parenthesized_expression "((pIVar10->u2_).object)" ( (field_expression "(pIVar10->u2_).object" (parenthesized_expression "(pIVar10->u2_)" ( (field_expression "pIVar10->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }" else (compound_statement "{\n            uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);\nLAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }\n            if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;\n          }" { (expression_statement "uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f);" (assignment_expression "uVar5 = 1L << ((char)pIVar10->p2align_ - 1U & 0x3f)" identifier = (binary_expression "1L << ((char)pIVar10->p2align_ - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)pIVar10->p2align_ - 1U & 0x3f)" ( (binary_expression "(char)pIVar10->p2align_ - 1U & 0x3f" (binary_expression "(char)pIVar10->p2align_ - 1U" (cast_expression "(char)pIVar10->p2align_" ( (type_descriptor "char" primitive_type) ) (field_expression "pIVar10->p2align_" identifier -> field_identifier)) - number_literal) & number_literal) )))) ;) (labeled_statement "LAB_001fbfb1:\n            if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }" statement_identifier : (if_statement "if (uVar5 != 0) {\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;\n            }" { (labeled_statement "LAB_001fbf2d:\n              uVar11 = (uVar11 - 1) + uVar5 & -uVar5;" statement_identifier : (expression_statement "uVar11 = (uVar11 - 1) + uVar5 & -uVar5;" (assignment_expression "uVar11 = (uVar11 - 1) + uVar5 & -uVar5" identifier = (binary_expression "(uVar11 - 1) + uVar5 & -uVar5" (binary_expression "(uVar11 - 1) + uVar5" (parenthesized_expression "(uVar11 - 1)" ( (binary_expression "uVar11 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-uVar5" - identifier))) ;)) }))) (if_statement "if (uVar7 < 4) {\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }" if (parenthesized_expression "(uVar7 < 4)" ( (binary_expression "uVar7 < 4" identifier < number_literal) )) (compound_statement "{\n              this_00 = (pIVar10->u2_).object;\n              pp_Var8 = (this_00->super_Object)._vptr_Object;\n              goto LAB_001fbf4b;\n            }" { (expression_statement "this_00 = (pIVar10->u2_).object;" (assignment_expression "this_00 = (pIVar10->u2_).object" identifier = (field_expression "(pIVar10->u2_).object" (parenthesized_expression "(pIVar10->u2_)" ( (field_expression "pIVar10->u2_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pp_Var8 = (this_00->super_Object)._vptr_Object;" (assignment_expression "pp_Var8 = (this_00->super_Object)._vptr_Object" identifier = (field_expression "(this_00->super_Object)._vptr_Object" (parenthesized_expression "(this_00->super_Object)" ( (field_expression "this_00->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (goto_statement "goto LAB_001fbf4b;" goto statement_identifier ;) })) (labeled_statement "LAB_001fbfc0:\n            if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;" statement_identifier : (if_statement "if ((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))\n            goto LAB_001fbfe5;" if (parenthesized_expression "((shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object))" ( (binary_expression "(shndx == uVar6) && (sVar9 = offset, object == (pIVar10->u2_).object)" (parenthesized_expression "(shndx == uVar6)" ( (binary_expression "shndx == uVar6" identifier == identifier) )) && (parenthesized_expression "(sVar9 = offset, object == (pIVar10->u2_).object)" ( (comma_expression "sVar9 = offset, object == (pIVar10->u2_).object" (assignment_expression "sVar9 = offset" identifier = identifier) , (binary_expression "object == (pIVar10->u2_).object" identifier == (field_expression "(pIVar10->u2_).object" (parenthesized_expression "(pIVar10->u2_)" ( (field_expression "pIVar10->u2_" identifier -> field_identifier) )) . field_identifier))) ))) )) (goto_statement "goto LAB_001fbfe5;" goto statement_identifier ;))) (labeled_statement "LAB_001fbfca:\n            sVar4 = (pIVar10->u1_).data_size;" statement_identifier : (expression_statement "sVar4 = (pIVar10->u1_).data_size;" (assignment_expression "sVar4 = (pIVar10->u1_).data_size" identifier = (field_expression "(pIVar10->u1_).data_size" (parenthesized_expression "(pIVar10->u1_)" ( (field_expression "pIVar10->u1_" identifier -> field_identifier) )) . field_identifier)) ;)) }))) (expression_statement "uVar11 = uVar11 + sVar4;" (assignment_expression "uVar11 = uVar11 + sVar4" identifier = (binary_expression "uVar11 + sVar4" identifier + identifier)) ;) (expression_statement "pIVar10 = pIVar10 + 1;" (assignment_expression "pIVar10 = pIVar10 + 1" identifier = (binary_expression "pIVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish != pIVar10)" ( (ERROR "(this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::" (comma_expression "(this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std" (binary_expression "(this->input_sections_).\n                 super__Vector_base<gold" (field_expression "(this->input_sections_).\n                 super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section::Input_section" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section>_>\n                 ._M_impl._M_finish != pIVar10" (field_expression "Input_section>_>\n                 ._M_impl._M_finish" (field_expression "Input_section>_>\n                 ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address");" (call_expression "do_gold_unreachable("../../gold/output.cc",0xc1b,"output_address")" identifier (argument_list "("../../gold/output.cc",0xc1b,"output_address")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""output_address"" " string_content ") ))) ;) })) (expression_statement "iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset);" (assignment_expression "iVar2 = (*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset)" identifier = (call_expression "(*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])(pOVar3,object,(ulong)shndx,offset,&output_offset)" (parenthesized_expression "(*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16])" ( (pointer_expression "*(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16]" * (subscript_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data[0x16]" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n              _vptr_Output_data" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar3->super_Output_section_data_build)" ( (field_expression "pOVar3->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(pOVar3,object,(ulong)shndx,offset,&output_offset)" ( identifier , identifier , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier , (pointer_expression "&output_offset" & identifier) )))) ;) (if_statement "if ((char)iVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }" if (parenthesized_expression "((char)iVar2 == '\0')" ( (binary_expression "(char)iVar2 == '\0'" (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0xc02,"output_address");" (call_expression "do_gold_unreachable("../../gold/output.cc",0xc02,"output_address")" identifier (argument_list "("../../gold/output.cc",0xc02,"output_address")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""output_address"" " string_content ") ))) ;) })) (if_statement "if (((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0) {\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }" if (parenthesized_expression "(((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0)" ( (binary_expression "((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1) != 0" (parenthesized_expression "((pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1)" ( (binary_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20 & 1" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n         field_0x20" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar3->super_Output_section_data_build)" ( (field_expression "pOVar3->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;\n    }" { (return_statement "return (pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset;" return (binary_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_ + output_offset" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n             address_" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar3->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar3->super_Output_section_data_build)" ( (field_expression "pOVar3->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) + identifier) ;) })) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })))
(translation_unit "long FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)\n\n{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}\n\n" (function_definition "long FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)\n\n{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)" identifier (parameter_list "(long param_1,long param_2,int param_3,long param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 1" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }" { (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0xa0);" (assignment_expression "lVar4 = *(long *)(param_1 + 0xa0)" identifier = (pointer_expression "*(long *)(param_1 + 0xa0)" * (cast_expression "(long *)(param_1 + 0xa0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "plVar2 = (long *)FUN_001bd440(param_2,param_3);" (assignment_expression "plVar2 = (long *)FUN_001bd440(param_2,param_3)" identifier = (cast_expression "(long *)FUN_001bd440(param_2,param_3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001bd440(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))))) ;) (if_statement "if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }" if (parenthesized_expression "(((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0))" ( (binary_expression "((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)" (parenthesized_expression "((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0))" ( (binary_expression "(plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)" (parenthesized_expression "(plVar2 == (long *)0x0)" ( (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)" ( (comma_expression "plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0" (assignment_expression "plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3)" identifier = (cast_expression "(long *)FUN_001fbb90(param_1,param_2,param_3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fbb90(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))))) , (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) || (parenthesized_expression "((*(byte *)(plVar2 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar2 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar2 + 4) & 1)" ( (binary_expression "*(byte *)(plVar2 + 4) & 1" (pointer_expression "*(byte *)(plVar2 + 4)" * (cast_expression "(byte *)(plVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar2 + 4)" ( (binary_expression "plVar2 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }" { (expression_statement "piVar7 = *(int **)(param_1 + 0x88);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x88)" identifier = (pointer_expression "*(int **)(param_1 + 0x88)" * (cast_expression "(int **)(param_1 + 0x88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }" if (parenthesized_expression "(piVar7 != *(int **)(param_1 + 0x90))" ( (binary_expression "piVar7 != *(int **)(param_1 + 0x90)" identifier != (pointer_expression "*(int **)(param_1 + 0x90)" * (cast_expression "(int **)(param_1 + 0x90)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }" { (expression_statement "uVar8 = lVar4 + lVar3;" (assignment_expression "uVar8 = lVar4 + lVar3" identifier = (binary_expression "lVar4 + lVar3" identifier + identifier)) ;) (do_statement "do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);" do (compound_statement "{\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        }" { (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "uVar6 = iVar5 + 4;" (assignment_expression "uVar6 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (if_statement "if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" if (parenthesized_expression "(piVar7[1] == 0)" ( (binary_expression "piVar7[1] == 0" (subscript_expression "piVar7[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }" { (if_statement "if (3 < uVar6) goto LAB_001fbfc0;" if (parenthesized_expression "(3 < uVar6)" ( (binary_expression "3 < uVar6" number_literal < identifier) )) (goto_statement "goto LAB_001fbfc0;" goto statement_identifier ;)) (expression_statement "plVar2 = *(long **)(piVar7 + 4);" (assignment_expression "plVar2 = *(long **)(piVar7 + 4)" identifier = (pointer_expression "*(long **)(piVar7 + 4)" * (cast_expression "(long **)(piVar7 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }" if (parenthesized_expression "(*(code **)(lVar3 + 0x18) != FUN_00185200)" ( (binary_expression "*(code **)(lVar3 + 0x18) != FUN_00185200" (pointer_expression "*(code **)(lVar3 + 0x18)" * (cast_expression "(code **)(lVar3 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }" { (expression_statement "lVar4 = (**(code **)(lVar3 + 0x18))();" (assignment_expression "lVar4 = (**(code **)(lVar3 + 0x18))()" identifier = (call_expression "(**(code **)(lVar3 + 0x18))()" (parenthesized_expression "(**(code **)(lVar3 + 0x18))" ( (pointer_expression "**(code **)(lVar3 + 0x18)" * (pointer_expression "*(code **)(lVar3 + 0x18)" * (cast_expression "(code **)(lVar3 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "uVar6 = iVar5 + 4;" (assignment_expression "uVar6 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (goto_statement "goto LAB_001fbfb1;" goto statement_identifier ;) })) (expression_statement "lVar4 = plVar2[6];" (assignment_expression "lVar4 = plVar2[6]" identifier = (subscript_expression "plVar2[6]" identifier [ number_literal ])) ;) (if_statement "if (lVar4 != 0) goto LAB_001fbf2d;" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001fbf2d;" goto statement_identifier ;)) (labeled_statement "LAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" statement_identifier : (expression_statement "cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (assignment_expression "cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" identifier = (call_expression "(**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (parenthesized_expression "(**(code **)(lVar3 + 0xb0))" ( (pointer_expression "**(code **)(lVar3 + 0xb0)" * (pointer_expression "*(code **)(lVar3 + 0xb0)" * (cast_expression "(code **)(lVar3 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0xb0)" ( (binary_expression "lVar3 + 0xb0" identifier + number_literal) ))))) )) (argument_list "(plVar2,param_2,param_3,param_4,local_40)" ( identifier , identifier , identifier , identifier , identifier )))) ;)) (expression_statement "lVar3 = local_40[0];" (assignment_expression "lVar3 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }" { (labeled_statement "LAB_001fbfe5:\n              lVar4 = -1;" statement_identifier : (expression_statement "lVar4 = -1;" (assignment_expression "lVar4 = -1" identifier = number_literal) ;)) (if_statement "if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }" if (parenthesized_expression "(lVar3 != -1)" ( (binary_expression "lVar3 != -1" identifier != number_literal) )) (compound_statement "{\n                lVar4 = lVar3 + uVar8;\n              }" { (expression_statement "lVar4 = lVar3 + uVar8;" (assignment_expression "lVar4 = lVar3 + uVar8" identifier = (binary_expression "lVar3 + uVar8" identifier + identifier)) ;) })) (return_statement "return lVar4;" return identifier ;) })) (if_statement "if (3 < *piVar7 + 4U) goto LAB_001fbfca;" if (parenthesized_expression "(3 < *piVar7 + 4U)" ( (binary_expression "3 < *piVar7 + 4U" number_literal < (binary_expression "*piVar7 + 4U" (pointer_expression "*piVar7" * identifier) + number_literal)) )) (goto_statement "goto LAB_001fbfca;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }" if (parenthesized_expression "((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2)" ( (binary_expression "*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2" (pointer_expression "*(byte *)(*(long *)(piVar7 + 4) + 0x20)" * (cast_expression "(byte *)(*(long *)(piVar7 + 4) + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(piVar7 + 4) + 0x20)" ( (binary_expression "*(long *)(piVar7 + 4) + 0x20" (pointer_expression "*(long *)(piVar7 + 4)" * (cast_expression "(long *)(piVar7 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n              FUN_001f48c0();\n            }" { (expression_statement "FUN_001f48c0();" (call_expression "FUN_001f48c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(piVar7 + 4) + 0x10)" * (cast_expression "(long *)(*(long *)(piVar7 + 4) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(piVar7 + 4) + 0x10)" ( (binary_expression "*(long *)(piVar7 + 4) + 0x10" (pointer_expression "*(long *)(piVar7 + 4)" * (cast_expression "(long *)(piVar7 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" else (compound_statement "{\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" { (expression_statement "lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);" (assignment_expression "lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f)" identifier = (binary_expression "1L << ((char)piVar7[1] - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)piVar7[1] - 1U & 0x3f)" ( (binary_expression "(char)piVar7[1] - 1U & 0x3f" (binary_expression "(char)piVar7[1] - 1U" (cast_expression "(char)piVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) - number_literal) & number_literal) )))) ;) (labeled_statement "LAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" statement_identifier : (if_statement "if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" { (labeled_statement "LAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;" statement_identifier : (expression_statement "uVar8 = (uVar8 - 1) + lVar4 & -lVar4;" (assignment_expression "uVar8 = (uVar8 - 1) + lVar4 & -lVar4" identifier = (binary_expression "(uVar8 - 1) + lVar4 & -lVar4" (binary_expression "(uVar8 - 1) + lVar4" (parenthesized_expression "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-lVar4" - identifier))) ;)) }))) (if_statement "if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }" if (parenthesized_expression "(uVar6 < 4)" ( (binary_expression "uVar6 < 4" identifier < number_literal) )) (compound_statement "{\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }" { (expression_statement "plVar2 = *(long **)(piVar7 + 4);" (assignment_expression "plVar2 = *(long **)(piVar7 + 4)" identifier = (pointer_expression "*(long **)(piVar7 + 4)" * (cast_expression "(long **)(piVar7 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (goto_statement "goto LAB_001fbf4b;" goto statement_identifier ;) })) (labeled_statement "LAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;" statement_identifier : (if_statement "if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;" if (parenthesized_expression "((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))" ( (binary_expression "(param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4))" (parenthesized_expression "(param_3 == iVar5)" ( (binary_expression "param_3 == iVar5" identifier == identifier) )) && (parenthesized_expression "(lVar3 = param_4, param_2 == *(long *)(piVar7 + 4))" ( (comma_expression "lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)" (assignment_expression "lVar3 = param_4" identifier = identifier) , (binary_expression "param_2 == *(long *)(piVar7 + 4)" identifier == (pointer_expression "*(long *)(piVar7 + 4)" * (cast_expression "(long *)(piVar7 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))))) ))) )) (goto_statement "goto LAB_001fbfe5;" goto statement_identifier ;))) (labeled_statement "LAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);" statement_identifier : (expression_statement "lVar3 = *(long *)(piVar7 + 2);" (assignment_expression "lVar3 = *(long *)(piVar7 + 2)" identifier = (pointer_expression "*(long *)(piVar7 + 2)" * (cast_expression "(long *)(piVar7 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 2)" ( (binary_expression "piVar7 + 2" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar8 = uVar8 + lVar3;" (assignment_expression "uVar8 = uVar8 + lVar3" identifier = (binary_expression "uVar8 + lVar3" identifier + identifier)) ;) (expression_statement "piVar7 = piVar7 + 8;" (assignment_expression "piVar7 = piVar7 + 8" identifier = (binary_expression "piVar7 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(int **)(param_1 + 0x90) != piVar7)" ( (binary_expression "*(int **)(param_1 + 0x90) != piVar7" (pointer_expression "*(int **)(param_1 + 0x90)" * (cast_expression "(int **)(param_1 + 0x90)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) != identifier) )) ;) })) (expression_statement "FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");" (call_expression "FUN_0017c650("../../gold/output.cc",0xc1b,"output_address")" identifier (argument_list "("../../gold/output.cc",0xc1b,"output_address")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""output_address"" " string_content ") ))) ;) })) (expression_statement "cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (assignment_expression "cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" identifier = (call_expression "(**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (parenthesized_expression "(**(code **)(*plVar2 + 0xb0))" ( (pointer_expression "**(code **)(*plVar2 + 0xb0)" * (pointer_expression "*(code **)(*plVar2 + 0xb0)" * (cast_expression "(code **)(*plVar2 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0xb0)" ( (binary_expression "*plVar2 + 0xb0" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(plVar2,param_2,param_3,param_4,local_40)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }" { (expression_statement "FUN_0017c650("../../gold/output.cc",0xc02,"output_address");" (call_expression "FUN_0017c650("../../gold/output.cc",0xc02,"output_address")" identifier (argument_list "("../../gold/output.cc",0xc02,"output_address")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""output_address"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }" if (parenthesized_expression "((*(byte *)(plVar2 + 4) & 1) != 0)" ( (binary_expression "(*(byte *)(plVar2 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(plVar2 + 4) & 1)" ( (binary_expression "*(byte *)(plVar2 + 4) & 1" (pointer_expression "*(byte *)(plVar2 + 4)" * (cast_expression "(byte *)(plVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar2 + 4)" ( (binary_expression "plVar2 + 4" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return plVar2[1] + local_40[0];\n    }" { (return_statement "return plVar2[1] + local_40[0];" return (binary_expression "plVar2[1] + local_40[0]" (subscript_expression "plVar2[1]" identifier [ number_literal ]) + (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) })) (expression_statement "FUN_0017c650("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0017c650("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (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 LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != 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 ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (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 , IDENT , IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (pointer_expression * IDENT) + LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - LIT) & LIT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + IDENT) & (unary_expression - IDENT))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "long FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)\n\n{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_001fbe80(long param_1,long param_2,int param_3,long param_4)" (identifier "FUN_001fbe80") (parameter_list "(long param_1,long param_2,int param_3,long param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  char cVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  int *piVar7;\n  ulong uVar8;\n  long local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xc5,"address");\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 1) != 0) {\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 1" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar3 = *(long *)(param_1 + 8);\n    lVar4 = *(long *)(param_1 + 0xa0);\n    plVar2 = (long *)FUN_001bd440(param_2,param_3);\n    if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }\n    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n    if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }\n    if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }\n  }" ({ "{") (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 0xa0);" (assignment_expression "lVar4 = *(long *)(param_1 + 0xa0)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0xa0)" (* "*") (cast_expression "(long *)(param_1 + 0xa0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "plVar2 = (long *)FUN_001bd440(param_2,param_3);" (assignment_expression "plVar2 = (long *)FUN_001bd440(param_2,param_3)" (identifier "plVar2") (= "=") (cast_expression "(long *)FUN_001bd440(param_2,param_3)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001bd440(param_2,param_3)" (identifier "FUN_001bd440") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))))) (; ";")) (if_statement "if (((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)) {\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }" (if "if") (parenthesized_expression "(((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0))" (( "(") (binary_expression "((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||\n       ((*(byte *)(plVar2 + 4) & 1) == 0)" (parenthesized_expression "((plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0))" (( "(") (binary_expression "(plVar2 == (long *)0x0) &&\n        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)" (parenthesized_expression "(plVar2 == (long *)0x0)" (( "(") (binary_expression "plVar2 == (long *)0x0" (identifier "plVar2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)" (( "(") (comma_expression "plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0" (assignment_expression "plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3)" (identifier "plVar2") (= "=") (cast_expression "(long *)FUN_001fbb90(param_1,param_2,param_3)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fbb90(param_1,param_2,param_3)" (identifier "FUN_001fbb90") (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))))) (, ",") (binary_expression "plVar2 == (long *)0x0" (identifier "plVar2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(plVar2 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(plVar2 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar2 + 4) & 1)" (( "(") (binary_expression "*(byte *)(plVar2 + 4) & 1" (pointer_expression "*(byte *)(plVar2 + 4)" (* "*") (cast_expression "(byte *)(plVar2 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar2 + 4)" (( "(") (binary_expression "plVar2 + 4" (identifier "plVar2") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      piVar7 = *(int **)(param_1 + 0x88);\n      if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }\n                    \n      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");\n    }" ({ "{") (expression_statement "piVar7 = *(int **)(param_1 + 0x88);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x88)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x88)" (* "*") (cast_expression "(int **)(param_1 + 0x88)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (if_statement "if (piVar7 != *(int **)(param_1 + 0x90)) {\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }" (if "if") (parenthesized_expression "(piVar7 != *(int **)(param_1 + 0x90))" (( "(") (binary_expression "piVar7 != *(int **)(param_1 + 0x90)" (identifier "piVar7") (!= "!=") (pointer_expression "*(int **)(param_1 + 0x90)" (* "*") (cast_expression "(int **)(param_1 + 0x90)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")"))))) () ")")) (compound_statement "{\n        uVar8 = lVar4 + lVar3;\n        do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);\n      }" ({ "{") (expression_statement "uVar8 = lVar4 + lVar3;" (assignment_expression "uVar8 = lVar4 + lVar3" (identifier "uVar8") (= "=") (binary_expression "lVar4 + lVar3" (identifier "lVar4") (+ "+") (identifier "lVar3"))) (; ";")) (do_statement "do {\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        } while (*(int **)(param_1 + 0x90) != piVar7);" (do "do") (compound_statement "{\n          iVar5 = *piVar7;\n          uVar6 = iVar5 + 4;\n          if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }\n          uVar8 = uVar8 + lVar3;\n          piVar7 = piVar7 + 8;\n        }" ({ "{") (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" (identifier "iVar5") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "uVar6 = iVar5 + 4;" (assignment_expression "uVar6 = iVar5 + 4" (identifier "uVar6") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (piVar7[1] == 0) {\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }\n          else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" (if "if") (parenthesized_expression "(piVar7[1] == 0)" (( "(") (binary_expression "piVar7[1] == 0" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (3 < uVar6) goto LAB_001fbfc0;\n            plVar2 = *(long **)(piVar7 + 4);\n            lVar3 = *plVar2;\n            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }\n            lVar4 = plVar2[6];\n            if (lVar4 != 0) goto LAB_001fbf2d;\nLAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);\n            lVar3 = local_40[0];\n            if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }\n            if (3 < *piVar7 + 4U) goto LAB_001fbfca;\n            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }\n            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);\n          }" ({ "{") (if_statement "if (3 < uVar6) goto LAB_001fbfc0;" (if "if") (parenthesized_expression "(3 < uVar6)" (( "(") (binary_expression "3 < uVar6" (number_literal "3") (< "<") (identifier "uVar6")) () ")")) (goto_statement "goto LAB_001fbfc0;" (goto "goto") (statement_identifier "LAB_001fbfc0") (; ";"))) (expression_statement "plVar2 = *(long **)(piVar7 + 4);" (assignment_expression "plVar2 = *(long **)(piVar7 + 4)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(piVar7 + 4)" (* "*") (cast_expression "(long **)(piVar7 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar7 + 4)" (( "(") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" (identifier "lVar3") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (if_statement "if (*(code **)(lVar3 + 0x18) != FUN_00185200) {\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }" (if "if") (parenthesized_expression "(*(code **)(lVar3 + 0x18) != FUN_00185200)" (( "(") (binary_expression "*(code **)(lVar3 + 0x18) != FUN_00185200" (pointer_expression "*(code **)(lVar3 + 0x18)" (* "*") (cast_expression "(code **)(lVar3 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (identifier "FUN_00185200")) () ")")) (compound_statement "{\n              lVar4 = (**(code **)(lVar3 + 0x18))();\n              iVar5 = *piVar7;\n              uVar6 = iVar5 + 4;\n              goto LAB_001fbfb1;\n            }" ({ "{") (expression_statement "lVar4 = (**(code **)(lVar3 + 0x18))();" (assignment_expression "lVar4 = (**(code **)(lVar3 + 0x18))()" (identifier "lVar4") (= "=") (call_expression "(**(code **)(lVar3 + 0x18))()" (parenthesized_expression "(**(code **)(lVar3 + 0x18))" (( "(") (pointer_expression "**(code **)(lVar3 + 0x18)" (* "*") (pointer_expression "*(code **)(lVar3 + 0x18)" (* "*") (cast_expression "(code **)(lVar3 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" (identifier "iVar5") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "uVar6 = iVar5 + 4;" (assignment_expression "uVar6 = iVar5 + 4" (identifier "uVar6") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (goto_statement "goto LAB_001fbfb1;" (goto "goto") (statement_identifier "LAB_001fbfb1") (; ";")) (} "}"))) (expression_statement "lVar4 = plVar2[6];" (assignment_expression "lVar4 = plVar2[6]" (identifier "lVar4") (= "=") (subscript_expression "plVar2[6]" (identifier "plVar2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (lVar4 != 0) goto LAB_001fbf2d;" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001fbf2d;" (goto "goto") (statement_identifier "LAB_001fbf2d") (; ";"))) (labeled_statement "LAB_001fbf4b:\n            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (statement_identifier "LAB_001fbf4b") (: ":") (expression_statement "cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (assignment_expression "cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (identifier "cVar1") (= "=") (call_expression "(**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (parenthesized_expression "(**(code **)(lVar3 + 0xb0))" (( "(") (pointer_expression "**(code **)(lVar3 + 0xb0)" (* "*") (pointer_expression "*(code **)(lVar3 + 0xb0)" (* "*") (cast_expression "(code **)(lVar3 + 0xb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 0xb0)" (( "(") (binary_expression "lVar3 + 0xb0" (identifier "lVar3") (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (argument_list "(plVar2,param_2,param_3,param_4,local_40)" (( "(") (identifier "plVar2") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "local_40") () ")")))) (; ";"))) (expression_statement "lVar3 = local_40[0];" (assignment_expression "lVar3 = local_40[0]" (identifier "lVar3") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (cVar1 != '\0') {\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_001fbfe5:\n              lVar4 = -1;\n              if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }\n              return lVar4;\n            }" ({ "{") (labeled_statement "LAB_001fbfe5:\n              lVar4 = -1;" (statement_identifier "LAB_001fbfe5") (: ":") (expression_statement "lVar4 = -1;" (assignment_expression "lVar4 = -1" (identifier "lVar4") (= "=") (number_literal "-1")) (; ";"))) (if_statement "if (lVar3 != -1) {\n                lVar4 = lVar3 + uVar8;\n              }" (if "if") (parenthesized_expression "(lVar3 != -1)" (( "(") (binary_expression "lVar3 != -1" (identifier "lVar3") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n                lVar4 = lVar3 + uVar8;\n              }" ({ "{") (expression_statement "lVar4 = lVar3 + uVar8;" (assignment_expression "lVar4 = lVar3 + uVar8" (identifier "lVar4") (= "=") (binary_expression "lVar3 + uVar8" (identifier "lVar3") (+ "+") (identifier "uVar8"))) (; ";")) (} "}"))) (return_statement "return lVar4;" (return "return") (identifier "lVar4") (; ";")) (} "}"))) (if_statement "if (3 < *piVar7 + 4U) goto LAB_001fbfca;" (if "if") (parenthesized_expression "(3 < *piVar7 + 4U)" (( "(") (binary_expression "3 < *piVar7 + 4U" (number_literal "3") (< "<") (binary_expression "*piVar7 + 4U" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "4U"))) () ")")) (goto_statement "goto LAB_001fbfca;" (goto "goto") (statement_identifier "LAB_001fbfca") (; ";"))) (if_statement "if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {\n                    \n              FUN_001f48c0();\n            }" (if "if") (parenthesized_expression "((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2" (pointer_expression "*(byte *)(*(long *)(piVar7 + 4) + 0x20)" (* "*") (cast_expression "(byte *)(*(long *)(piVar7 + 4) + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(piVar7 + 4) + 0x20)" (( "(") (binary_expression "*(long *)(piVar7 + 4) + 0x20" (pointer_expression "*(long *)(piVar7 + 4)" (* "*") (cast_expression "(long *)(piVar7 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 4)" (( "(") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n              FUN_001f48c0();\n            }" ({ "{") (expression_statement "FUN_001f48c0();" (call_expression "FUN_001f48c0()" (identifier "FUN_001f48c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(piVar7 + 4) + 0x10)" (* "*") (cast_expression "(long *)(*(long *)(piVar7 + 4) + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(piVar7 + 4) + 0x10)" (( "(") (binary_expression "*(long *)(piVar7 + 4) + 0x10" (pointer_expression "*(long *)(piVar7 + 4)" (* "*") (cast_expression "(long *)(piVar7 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 4)" (( "(") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" (else "else") (compound_statement "{\n            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);\nLAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }\n            if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }\nLAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;\nLAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);\n          }" ({ "{") (expression_statement "lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);" (assignment_expression "lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f)" (identifier "lVar4") (= "=") (binary_expression "1L << ((char)piVar7[1] - 1U & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((char)piVar7[1] - 1U & 0x3f)" (( "(") (binary_expression "(char)piVar7[1] - 1U & 0x3f" (binary_expression "(char)piVar7[1] - 1U" (cast_expression "(char)piVar7[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (- "-") (number_literal "1U")) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (labeled_statement "LAB_001fbfb1:\n            if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" (statement_identifier "LAB_001fbfb1") (: ":") (if_statement "if (lVar4 != 0) {\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;\n            }" ({ "{") (labeled_statement "LAB_001fbf2d:\n              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;" (statement_identifier "LAB_001fbf2d") (: ":") (expression_statement "uVar8 = (uVar8 - 1) + lVar4 & -lVar4;" (assignment_expression "uVar8 = (uVar8 - 1) + lVar4 & -lVar4" (identifier "uVar8") (= "=") (binary_expression "(uVar8 - 1) + lVar4 & -lVar4" (binary_expression "(uVar8 - 1) + lVar4" (parenthesized_expression "(uVar8 - 1)" (( "(") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1")) () ")")) (+ "+") (identifier "lVar4")) (& "&") (unary_expression "-lVar4" (- "-") (identifier "lVar4")))) (; ";"))) (} "}")))) (if_statement "if (uVar6 < 4) {\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }" (if "if") (parenthesized_expression "(uVar6 < 4)" (( "(") (binary_expression "uVar6 < 4" (identifier "uVar6") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n              plVar2 = *(long **)(piVar7 + 4);\n              lVar3 = *plVar2;\n              goto LAB_001fbf4b;\n            }" ({ "{") (expression_statement "plVar2 = *(long **)(piVar7 + 4);" (assignment_expression "plVar2 = *(long **)(piVar7 + 4)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(piVar7 + 4)" (* "*") (cast_expression "(long **)(piVar7 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar7 + 4)" (( "(") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" (identifier "lVar3") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (goto_statement "goto LAB_001fbf4b;" (goto "goto") (statement_identifier "LAB_001fbf4b") (; ";")) (} "}"))) (labeled_statement "LAB_001fbfc0:\n            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;" (statement_identifier "LAB_001fbfc0") (: ":") (if_statement "if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))\n            goto LAB_001fbfe5;" (if "if") (parenthesized_expression "((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))" (( "(") (binary_expression "(param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4))" (parenthesized_expression "(param_3 == iVar5)" (( "(") (binary_expression "param_3 == iVar5" (identifier "param_3") (== "==") (identifier "iVar5")) () ")")) (&& "&&") (parenthesized_expression "(lVar3 = param_4, param_2 == *(long *)(piVar7 + 4))" (( "(") (comma_expression "lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)" (assignment_expression "lVar3 = param_4" (identifier "lVar3") (= "=") (identifier "param_4")) (, ",") (binary_expression "param_2 == *(long *)(piVar7 + 4)" (identifier "param_2") (== "==") (pointer_expression "*(long *)(piVar7 + 4)" (* "*") (cast_expression "(long *)(piVar7 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 4)" (( "(") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4")) () ")")))))) () ")"))) () ")")) (goto_statement "goto LAB_001fbfe5;" (goto "goto") (statement_identifier "LAB_001fbfe5") (; ";")))) (labeled_statement "LAB_001fbfca:\n            lVar3 = *(long *)(piVar7 + 2);" (statement_identifier "LAB_001fbfca") (: ":") (expression_statement "lVar3 = *(long *)(piVar7 + 2);" (assignment_expression "lVar3 = *(long *)(piVar7 + 2)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(piVar7 + 2)" (* "*") (cast_expression "(long *)(piVar7 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 2)" (( "(") (binary_expression "piVar7 + 2" (identifier "piVar7") (+ "+") (number_literal "2")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "uVar8 = uVar8 + lVar3;" (assignment_expression "uVar8 = uVar8 + lVar3" (identifier "uVar8") (= "=") (binary_expression "uVar8 + lVar3" (identifier "uVar8") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "piVar7 = piVar7 + 8;" (assignment_expression "piVar7 = piVar7 + 8" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 8" (identifier "piVar7") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int **)(param_1 + 0x90) != piVar7)" (( "(") (binary_expression "*(int **)(param_1 + 0x90) != piVar7" (pointer_expression "*(int **)(param_1 + 0x90)" (* "*") (cast_expression "(int **)(param_1 + 0x90)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")")))) (!= "!=") (identifier "piVar7")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");" (call_expression "FUN_0017c650("../../gold/output.cc",0xc1b,"output_address")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.cc",0xc1b,"output_address")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0xc1b") (, ",") (string_literal ""output_address"" (" """) (string_content "output_address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);" (assignment_expression "cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (identifier "cVar1") (= "=") (call_expression "(**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40)" (parenthesized_expression "(**(code **)(*plVar2 + 0xb0))" (( "(") (pointer_expression "**(code **)(*plVar2 + 0xb0)" (* "*") (pointer_expression "*(code **)(*plVar2 + 0xb0)" (* "*") (cast_expression "(code **)(*plVar2 + 0xb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar2 + 0xb0)" (( "(") (binary_expression "*plVar2 + 0xb0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (argument_list "(plVar2,param_2,param_3,param_4,local_40)" (( "(") (identifier "plVar2") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "local_40") () ")")))) (; ";")) (if_statement "if (cVar1 == '\0') {\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.cc",0xc02,"output_address");" (call_expression "FUN_0017c650("../../gold/output.cc",0xc02,"output_address")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.cc",0xc02,"output_address")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0xc02") (, ",") (string_literal ""output_address"" (" """) (string_content "output_address") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(plVar2 + 4) & 1) != 0) {\n      return plVar2[1] + local_40[0];\n    }" (if "if") (parenthesized_expression "((*(byte *)(plVar2 + 4) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(plVar2 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(plVar2 + 4) & 1)" (( "(") (binary_expression "*(byte *)(plVar2 + 4) & 1" (pointer_expression "*(byte *)(plVar2 + 4)" (* "*") (cast_expression "(byte *)(plVar2 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar2 + 4)" (( "(") (binary_expression "plVar2 + 4" (identifier "plVar2") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return plVar2[1] + local_40[0];\n    }" ({ "{") (return_statement "return plVar2[1] + local_40[0];" (return "return") (binary_expression "plVar2[1] + local_40[0]" (subscript_expression "plVar2[1]" (identifier "plVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0017c650("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0017c650("../../gold/output.h",0xc5,"address")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: uint64_t output_address(Output_section * this, Relobj * object, uint
   shndx, off_t offset) */

uint64_t __thiscall
gold::type_1::function_1(type_1 *this,type_2 *var_16,type_3 var_15,type_4 offset)

{
  long var_6;
  int iVar2;
  type_5 *var_2;
  type_6 var_17;
  uint64_t var_7;
  type_7 extraout_var;
  type_3 var_8;
  type_3 var_9;
  type_2 *this_00;
  type_8 **pp_Var8;
  type_9 var_12;
  type_10 var_18;
  type_11 var_13;
  type_9 var_20;
  
  if (((this->super_Output_data).field_0x20 & 1) != 0) {
    var_7 = (this->super_Output_data).address_;
    var_6 = this->first_input_offset_;
    var_2 = (type_5 *)type_2::var_1(var_16,var_15);
    if (((var_2 == (type_5 *)0x0) &&
        (var_2 = var_3(this,var_16,var_15),
        var_2 == (type_5 *)0x0)) ||
       (((var_2->super_Output_section_data_build).super_Output_section_data.super_Output_data.
         field_0x20 & 1) == 0)) {
      var_18 = (this->input_sections_).
                super__Vector_base<gold::Output_section::var_4,_std::allocator<gold::Output_section::var_4>var_5>
                ._M_impl._M_start;
      if (var_18 !=
          (this->input_sections_).
          super__Vector_base<gold::type_1::var_4,_std::allocator<gold::type_1::var_4>var_5>
          ._M_impl._M_finish) {
        var_13 = var_6 + var_7;
        do {
          var_8 = var_18->shndx_;
          var_9 = var_8 + 4;
          if (var_18->p2align_ == 0) {
            if (3 < var_9) goto LAB_001fbfc0;
            this_00 = (type_2 *)(var_18->u2_).posd;
            pp_Var8 = (this_00->super_Object)._vptr_Object;
            if (pp_Var8[3] != var_10::do_addralign) {
              iVar2 = (*pp_Var8[3])();
              var_7 = var_11(extraout_var,iVar2);
              var_8 = var_18->shndx_;
              var_9 = var_8 + 4;
              goto LAB_001fbfb1;
            }
            var_7 = (this_00->super_Object).offset_;
            if (var_7 != 0) goto LAB_001fbf2d;
LAB_001fbf4b:
            iVar2 = (*pp_Var8[0x16])(this_00,var_16,(type_11)var_15,offset,&var_20);
            var_12 = var_20;
            if ((char)iVar2 != '\0') {
LAB_001fbfe5:
              var_7 = 0xffffffffffffffff;
              if (var_12 != -1) {
                var_7 = var_12 + var_13;
              }
              return var_7;
            }
            if (3 < var_18->shndx_ + 4) goto LAB_001fbfca;
            if (((((var_18->u2_).var_16)->super_Object).name_.field_2._M_local_buf[8] & 2U) == 0) {
                    /* WARNING: Subroutine does not return */
              Input_section::var_14((var_4 *)this_00);
            }
            var_17 = (((var_18->u2_).var_16)->super_Object).name_._M_string_length;
          }
          else {
            var_7 = 1L << ((char)var_18->p2align_ - 1U & 0x3f);
LAB_001fbfb1:
            if (var_7 != 0) {
LAB_001fbf2d:
              var_13 = (var_13 - 1) + var_7 & -var_7;
            }
            if (var_9 < 4) {
              this_00 = (var_18->u2_).var_16;
              pp_Var8 = (this_00->super_Object)._vptr_Object;
              goto LAB_001fbf4b;
            }
LAB_001fbfc0:
            if ((var_15 == var_8) && (var_12 = offset, var_16 == (var_18->u2_).var_16))
            goto LAB_001fbfe5;
LAB_001fbfca:
            var_17 = (var_18->u1_).var_14;
          }
          var_13 = var_13 + var_17;
          var_18 = var_18 + 1;
        } while ((this->input_sections_).
                 super__Vector_base<gold::type_1::var_4,_std::allocator<gold::type_1::var_4>var_5>
                 ._M_impl._M_finish != var_18);
      }
                    /* WARNING: Subroutine does not return */
      var_19("../../gold/output.cc",0xc1b,"output_address");
    }
    iVar2 = (*(var_2->super_Output_section_data_build).super_Output_section_data.super_Output_data.
              _vptr_Output_data[0x16])(var_2,var_16,(type_11)var_15,offset,&var_20);
    if ((char)iVar2 == '\0') {
                    /* WARNING: Subroutine does not return */
      var_19("../../gold/output.cc",0xc02,"output_address");
    }
    if (((var_2->super_Output_section_data_build).super_Output_section_data.super_Output_data.
         field_0x20 & 1) != 0) {
      return (var_2->super_Output_section_data_build).super_Output_section_data.super_Output_data.
             address_ + var_20;
    }
  }
                    /* WARNING: Subroutine does not return */
  var_19("../../gold/output.h",0xc5,"address");
}


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

long MASKED(long param_1,long param_2,int param_3,long param_4)

{
  char cVar1;
  long *plVar2;
  long lVar3;
  long lVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  ulong uVar8;
  long local_40 [2];
  
  if ((*(byte *)(param_1 + 0x20) & 1) != 0) {
    lVar3 = *(long *)(param_1 + 8);
    lVar4 = *(long *)(param_1 + 0xa0);
    plVar2 = (long *)FUN_001bd440(param_2,param_3);
    if (((plVar2 == (long *)0x0) &&
        (plVar2 = (long *)FUN_001fbb90(param_1,param_2,param_3), plVar2 == (long *)0x0)) ||
       ((*(byte *)(plVar2 + 4) & 1) == 0)) {
      piVar7 = *(int **)(param_1 + 0x88);
      if (piVar7 != *(int **)(param_1 + 0x90)) {
        uVar8 = lVar4 + lVar3;
        do {
          iVar5 = *piVar7;
          uVar6 = iVar5 + 4;
          if (piVar7[1] == 0) {
            if (3 < uVar6) goto LAB_001fbfc0;
            plVar2 = *(long **)(piVar7 + 4);
            lVar3 = *plVar2;
            if (*(code **)(lVar3 + 0x18) != FUN_00185200) {
              lVar4 = (**(code **)(lVar3 + 0x18))();
              iVar5 = *piVar7;
              uVar6 = iVar5 + 4;
              goto LAB_001fbfb1;
            }
            lVar4 = plVar2[6];
            if (lVar4 != 0) goto LAB_001fbf2d;
LAB_001fbf4b:
            cVar1 = (**(code **)(lVar3 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);
            lVar3 = local_40[0];
            if (cVar1 != '\0') {
LAB_001fbfe5:
              lVar4 = -1;
              if (lVar3 != -1) {
                lVar4 = lVar3 + uVar8;
              }
              return lVar4;
            }
            if (3 < *piVar7 + 4U) goto LAB_001fbfca;
            if ((*(byte *)(*(long *)(piVar7 + 4) + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
              FUN_001f48c0();
            }
            lVar3 = *(long *)(*(long *)(piVar7 + 4) + 0x10);
          }
          else {
            lVar4 = 1L << ((char)piVar7[1] - 1U & 0x3f);
LAB_001fbfb1:
            if (lVar4 != 0) {
LAB_001fbf2d:
              uVar8 = (uVar8 - 1) + lVar4 & -lVar4;
            }
            if (uVar6 < 4) {
              plVar2 = *(long **)(piVar7 + 4);
              lVar3 = *plVar2;
              goto LAB_001fbf4b;
            }
LAB_001fbfc0:
            if ((param_3 == iVar5) && (lVar3 = param_4, param_2 == *(long *)(piVar7 + 4)))
            goto LAB_001fbfe5;
LAB_001fbfca:
            lVar3 = *(long *)(piVar7 + 2);
          }
          uVar8 = uVar8 + lVar3;
          piVar7 = piVar7 + 8;
        } while (*(int **)(param_1 + 0x90) != piVar7);
      }
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/output.cc",0xc1b,"output_address");
    }
    cVar1 = (**(code **)(*plVar2 + 0xb0))(plVar2,param_2,param_3,param_4,local_40);
    if (cVar1 == '\0') {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/output.cc",0xc02,"output_address");
    }
    if ((*(byte *)(plVar2 + 4) & 1) != 0) {
      return plVar2[1] + local_40[0];
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.h",0xc5,"address");
}

