
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: init_fixed_output_section<64, false>
   DWARF original prototype: Output_section * init_fixed_output_section<64,_false>(Layout * this,
   char * name, Shdr<64,_false> * shdr) */

Output_section * __thiscall
gold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)

{
  uint sh_type;
  Shdr_data<64> *pSVar1;
  uint64_t uVar2;
  Elf_Xword EVar3;
  Elf_WXword EVar4;
  uint64_t uVar5;
  bool bVar6;
  char *pcVar7;
  Output_section *this_00;
  long lVar8;
  byte *pbVar9;
  byte *pbVar10;
  char *__filename;
  bool bVar11;
  byte bVar12;
  Key name_key;
  
  bVar12 = 0;
  sh_type = shdr->p_->sh_type;
  bVar6 = can_incremental_update(sh_type);
  if (!bVar6) {
    return (Output_section *)0x0;
  }
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if ((parameters->options_->gdb_index_).value != false) {
    bVar6 = sh_type == 0;
    bVar11 = sh_type == 1;
    if (bVar11) {
      lVar8 = 0xb;
      pbVar9 = (byte *)name;
      pbVar10 = (byte *)".gdb_index";
      do {
        if (lVar8 == 0) break;
        lVar8 = lVar8 + -1;
        bVar6 = *pbVar9 < *pbVar10;
        bVar11 = *pbVar9 == *pbVar10;
        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar6 && !bVar11) == bVar6) {
        return (Output_section *)0x0;
      }
      pSVar1 = shdr->p_;
      EVar3 = pSVar1->sh_flags;
      uVar2 = pSVar1->sh_addr;
      __filename = (char *)pSVar1->sh_offset;
      EVar4 = pSVar1->sh_size;
      uVar5 = pSVar1->sh_addralign;
      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);
      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);
      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);
      goto LAB_001b6bfc;
    }
  }
  pSVar1 = shdr->p_;
  uVar2 = pSVar1->sh_addr;
  EVar3 = pSVar1->sh_flags;
  __filename = (char *)pSVar1->sh_offset;
  EVar4 = pSVar1->sh_size;
  uVar5 = pSVar1->sh_addralign;
  pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);
  this_00 = get_output_section(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false);
  Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);
  if (sh_type == 8) {
    return this_00;
  }
LAB_001b6bfc:
  Free_list::remove(&this->free_list_,__filename);
  return this_00;
}



undefined8 FUN_001b6a90(long param_1,byte *param_2,long *param_3)

{
  int iVar1;
  long lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  char cVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  byte *pbVar9;
  byte *pbVar10;
  long lVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  undefined8 local_40 [2];
  
  bVar14 = 0;
  iVar1 = *(int *)(*param_3 + 4);
  cVar5 = FUN_00183010(iVar1);
  if (cVar5 == '\0') {
    return 0;
  }
  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {
    bVar12 = iVar1 == 0;
    bVar13 = iVar1 == 1;
    if (bVar13) {
      lVar8 = 0xb;
      pbVar9 = param_2;
      pbVar10 = (byte *)".gdb_index";
      do {
        if (lVar8 == 0) break;
        lVar8 = lVar8 + -1;
        bVar12 = *pbVar9 < *pbVar10;
        bVar13 = *pbVar9 == *pbVar10;
        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;
      } while (bVar13);
      if ((!bVar12 && !bVar13) == bVar12) {
        return 0;
      }
      lVar2 = *param_3;
      uVar7 = *(undefined8 *)(lVar2 + 8);
      uVar3 = *(undefined8 *)(lVar2 + 0x10);
      lVar8 = *(long *)(lVar2 + 0x18);
      lVar11 = *(long *)(lVar2 + 0x20);
      uVar4 = *(undefined8 *)(lVar2 + 0x30);
      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);
      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);
      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);
      goto LAB_001b6bfc;
    }
  }
  lVar2 = *param_3;
  uVar3 = *(undefined8 *)(lVar2 + 0x10);
  uVar7 = *(undefined8 *)(lVar2 + 8);
  lVar8 = *(long *)(lVar2 + 0x18);
  lVar11 = *(long *)(lVar2 + 0x20);
  uVar4 = *(undefined8 *)(lVar2 + 0x30);
  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);
  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);
  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);
  if (iVar1 == 8) {
    return uVar7;
  }
LAB_001b6bfc:
  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);
  return uVar7;
}


PUSH R15
PUSH R14
MOV R14,RSI
PUSH R13
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x28
MOV RAX,qword ptr [RDX]
MOV EBX,dword ptr [RAX + 0x4]
MOV EDI,EBX
CALL 0x00183010
TEST AL,AL
JZ 0x001b6c18
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001b6c20
CMP byte ptr [RAX + 0x28d1],0x0
JZ 0x001b6ae2
CMP EBX,0x1
JZ 0x001b6b70
MOV RAX,qword ptr [R12]
LEA RCX,[RSP + 0x18]
LEA RDI,[RBP + 0x10]
MOV EDX,0x1
MOV RSI,qword ptr [RAX + 0x10]
MOV R8,qword ptr [RAX + 0x8]
MOV R13,qword ptr [RAX + 0x18]
MOV R12,qword ptr [RAX + 0x20]
MOV qword ptr [RSP],RSI
MOV RSI,R14
MOV R15,qword ptr [RAX + 0x30]
MOV qword ptr [RSP + 0x8],R8
CALL 0x0026e690
SUB RSP,0x8
XOR R9D,R9D
MOV ECX,EBX
PUSH 0x0
MOV R8,qword ptr [RSP + 0x18]
MOV RSI,RAX
MOV RDI,RBP
MOV RDX,qword ptr [RSP + 0x28]
CALL 0x001acd20
POP RCX
POP RSI
MOV R8,R15
MOV RSI,qword ptr [RSP]
MOV RCX,R12
MOV RDX,R13
MOV RDI,RAX
MOV R14,RAX
CALL 0x001f7080
CMP EBX,0x8
JNZ 0x001b6bfc
ADD RSP,0x28
MOV RAX,R14
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV ECX,0xb
LEA RDI,[0x37700a]
MOV RSI,R14
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x001b6c18
MOV RAX,qword ptr [R12]
LEA RCX,[RSP + 0x18]
MOV RSI,R14
LEA RDI,[RBP + 0x10]
MOV EDX,0x1
MOV R8,qword ptr [RAX + 0x8]
MOV RBX,qword ptr [RAX + 0x10]
MOV R13,qword ptr [RAX + 0x18]
MOV R12,qword ptr [RAX + 0x20]
MOV qword ptr [RSP],R8
MOV R15,qword ptr [RAX + 0x30]
CALL 0x0026e690
SUB RSP,0x8
MOV RDI,RBP
XOR R9D,R9D
PUSH 0x0
MOV R8,qword ptr [RSP + 0x10]
MOV ECX,0x1
MOV RSI,RAX
MOV RDX,qword ptr [RSP + 0x28]
CALL 0x001acd20
MOV R8,R15
MOV RCX,R12
MOV RSI,RBX
MOV R14,RAX
POP RAX
POP RDX
MOV RDX,R13
MOV RDI,R14
CALL 0x001f7080
LEA RDX,[R12 + R13*0x1]
LEA RDI,[RBP + 0x468]
MOV RSI,R13
CALL 0x001a46a0
JMP 0x001b6b5c
XOR R14D,R14D
JMP 0x001b6b5c
LEA RDX,[0x3778a8]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
(translation_unit "undefined8 FUN_001b6a90(long param_1,byte *param_2,long *param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}\n\n" (function_definition "undefined8 FUN_001b6a90(long param_1,byte *param_2,long *param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}" type_identifier (function_declarator "FUN_001b6a90(long param_1,byte *param_2,long *param_3)" identifier (parameter_list "(long param_1,byte *param_2,long *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(*param_3 + 4);" (assignment_expression "iVar1 = *(int *)(*param_3 + 4)" identifier = (pointer_expression "*(int *)(*param_3 + 4)" * (cast_expression "(int *)(*param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 4)" ( (binary_expression "*param_3 + 4" (pointer_expression "*param_3" * identifier) + number_literal) ))))) ;) (expression_statement "cVar5 = FUN_00183010(iVar1);" (assignment_expression "cVar5 = FUN_00183010(iVar1)" identifier = (call_expression "FUN_00183010(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (if_statement "if (cVar5 == '\0') {\n    return 0;\n  }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }" { (expression_statement "bVar12 = iVar1 == 0;" (assignment_expression "bVar12 = iVar1 == 0" identifier = (binary_expression "iVar1 == 0" identifier == number_literal)) ;) (expression_statement "bVar13 = iVar1 == 1;" (assignment_expression "bVar13 = iVar1 == 1" identifier = (binary_expression "iVar1 == 1" identifier == number_literal)) ;) (if_statement "if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }" { (expression_statement "lVar8 = 0xb;" (assignment_expression "lVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar9 = param_2;" (assignment_expression "pbVar9 = param_2" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)".gdb_index";" (assignment_expression "pbVar10 = (byte *)".gdb_index"" identifier = (cast_expression "(byte *)".gdb_index"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gdb_index"" " string_content "))) ;) (do_statement "do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar13 = *pbVar9 == *pbVar10;" (assignment_expression "bVar13 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar2 = *param_3;" (assignment_expression "lVar2 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar7 = *(undefined8 *)(lVar2 + 8);" (assignment_expression "uVar7 = *(undefined8 *)(lVar2 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 8)" * (cast_expression "(undefined8 *)(lVar2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x18)" identifier = (pointer_expression "*(long *)(lVar2 + 0x18)" * (cast_expression "(long *)(lVar2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = *(long *)(lVar2 + 0x20);" (assignment_expression "lVar11 = *(long *)(lVar2 + 0x20)" identifier = (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined8 *)(lVar2 + 0x30);" (assignment_expression "uVar4 = *(undefined8 *)(lVar2 + 0x30)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x30)" * (cast_expression "(undefined8 *)(lVar2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x30)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);" (assignment_expression "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier = (call_expression "FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier (argument_list "(param_1 + 0x10,param_2,1,local_40)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , identifier )))) ;) (expression_statement "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);" (assignment_expression "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0)" identifier = (call_expression "FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0)" identifier (argument_list "(param_1,uVar6,local_40[0],1,uVar7,0,0)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , number_literal , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);" (call_expression "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4)" identifier (argument_list "(uVar7,uVar3,lVar8,lVar11,uVar4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001b6bfc;" goto statement_identifier ;) })) })) (expression_statement "lVar2 = *param_3;" (assignment_expression "lVar2 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined8 *)(lVar2 + 8);" (assignment_expression "uVar7 = *(undefined8 *)(lVar2 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 8)" * (cast_expression "(undefined8 *)(lVar2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x18)" identifier = (pointer_expression "*(long *)(lVar2 + 0x18)" * (cast_expression "(long *)(lVar2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = *(long *)(lVar2 + 0x20);" (assignment_expression "lVar11 = *(long *)(lVar2 + 0x20)" identifier = (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined8 *)(lVar2 + 0x30);" (assignment_expression "uVar4 = *(undefined8 *)(lVar2 + 0x30)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x30)" * (cast_expression "(undefined8 *)(lVar2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x30)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);" (assignment_expression "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier = (call_expression "FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier (argument_list "(param_1 + 0x10,param_2,1,local_40)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , identifier )))) ;) (expression_statement "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);" (assignment_expression "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" identifier = (call_expression "FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" identifier (argument_list "(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);" (call_expression "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4)" identifier (argument_list "(uVar7,uVar3,lVar8,lVar11,uVar4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar1 == 8) {\n    return uVar7;\n  }" if (parenthesized_expression "(iVar1 == 8)" ( (binary_expression "iVar1 == 8" identifier == number_literal) )) (compound_statement "{\n    return uVar7;\n  }" { (return_statement "return uVar7;" return identifier ;) })) (labeled_statement "LAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);" statement_identifier : (expression_statement "FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);" (call_expression "FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8)" identifier (argument_list "(param_1 + 0x468,lVar8,lVar11 + lVar8)" ( (binary_expression "param_1 + 0x468" identifier + number_literal) , identifier , (binary_expression "lVar11 + lVar8" identifier + identifier) ))) ;)) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original name: init_fixed_output_section<64, false>\n   DWARF original prototype: Output_section * init_fixed_output_section<64,_false>(Layout * this,\n   char * name, Shdr<64,_false> * shdr) */\n\nOutput_section * __thiscall\ngold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)\n\n{\n  uint sh_type;\n  Shdr_data<64> *pSVar1;\n  uint64_t uVar2;\n  Elf_Xword EVar3;\n  Elf_WXword EVar4;\n  uint64_t uVar5;\n  bool bVar6;\n  char *pcVar7;\n  Output_section *this_00;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  char *__filename;\n  bool bVar11;\n  byte bVar12;\n  Key name_key;\n  \n  bVar12 = 0;\n  sh_type = shdr->p_->sh_type;\n  bVar6 = can_incremental_update(sh_type);\n  if (!bVar6) {\n    return (Output_section *)0x0;\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((parameters->options_->gdb_index_).value != false) {\n    bVar6 = sh_type == 0;\n    bVar11 = sh_type == 1;\n    if (bVar11) {\n      lVar8 = 0xb;\n      pbVar9 = (byte *)name;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      EVar3 = pSVar1->sh_flags;\n      uVar2 = pSVar1->sh_addr;\n      __filename = (char *)pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_size;\n      uVar5 = pSVar1->sh_addralign;\n      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n      goto LAB_001b6bfc;\n    }\n  }\n  pSVar1 = shdr->p_;\n  uVar2 = pSVar1->sh_addr;\n  EVar3 = pSVar1->sh_flags;\n  __filename = (char *)pSVar1->sh_offset;\n  EVar4 = pSVar1->sh_size;\n  uVar5 = pSVar1->sh_addralign;\n  pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n  this_00 = get_output_section(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false);\n  Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n  if (sh_type == 8) {\n    return this_00;\n  }\nLAB_001b6bfc:\n  Free_list::remove(&this->free_list_,__filename);\n  return this_00;\n}\n\n" comment comment (ERROR "Output_section * __thiscall\ngold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)" (binary_expression "Output_section * __thiscall\ngold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)" (binary_expression "Output_section * __thiscall\ngold::Layout::init_fixed_output_section<64" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Layout::init_fixed_output_section" identifier : : identifier : : identifier) < number_literal) (ERROR ",_false" , identifier) > (parenthesized_expression "(Layout *this,char *name,Shdr<64,_false> *shdr)" ( (comma_expression "Layout *this,char *name,Shdr<64,_false> *shdr" (binary_expression "Layout *this" identifier * identifier) , (comma_expression "char *name,Shdr<64,_false> *shdr" (binary_expression "char *name" identifier * identifier) , (comma_expression "Shdr<64,_false> *shdr" (binary_expression "Shdr<64" identifier < number_literal) , (binary_expression "_false> *shdr" identifier > (pointer_expression "*shdr" * identifier))))) )))) (compound_statement "{\n  uint sh_type;\n  Shdr_data<64> *pSVar1;\n  uint64_t uVar2;\n  Elf_Xword EVar3;\n  Elf_WXword EVar4;\n  uint64_t uVar5;\n  bool bVar6;\n  char *pcVar7;\n  Output_section *this_00;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  char *__filename;\n  bool bVar11;\n  byte bVar12;\n  Key name_key;\n  \n  bVar12 = 0;\n  sh_type = shdr->p_->sh_type;\n  bVar6 = can_incremental_update(sh_type);\n  if (!bVar6) {\n    return (Output_section *)0x0;\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((parameters->options_->gdb_index_).value != false) {\n    bVar6 = sh_type == 0;\n    bVar11 = sh_type == 1;\n    if (bVar11) {\n      lVar8 = 0xb;\n      pbVar9 = (byte *)name;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      EVar3 = pSVar1->sh_flags;\n      uVar2 = pSVar1->sh_addr;\n      __filename = (char *)pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_size;\n      uVar5 = pSVar1->sh_addralign;\n      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n      goto LAB_001b6bfc;\n    }\n  }\n  pSVar1 = shdr->p_;\n  uVar2 = pSVar1->sh_addr;\n  EVar3 = pSVar1->sh_flags;\n  __filename = (char *)pSVar1->sh_offset;\n  EVar4 = pSVar1->sh_size;\n  uVar5 = pSVar1->sh_addralign;\n  pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n  this_00 = get_output_section(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false);\n  Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n  if (sh_type == 8) {\n    return this_00;\n  }\nLAB_001b6bfc:\n  Free_list::remove(&this->free_list_,__filename);\n  return this_00;\n}" { (declaration "uint sh_type;" type_identifier identifier ;) (expression_statement "Shdr_data<64> *pSVar1;" (binary_expression "Shdr_data<64> *pSVar1" (binary_expression "Shdr_data<64" identifier < number_literal) > (pointer_expression "*pSVar1" * identifier)) ;) (declaration "uint64_t uVar2;" primitive_type identifier ;) (declaration "Elf_Xword EVar3;" type_identifier identifier ;) (declaration "Elf_WXword EVar4;" type_identifier identifier ;) (declaration "uint64_t uVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "Output_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "char *__filename;" primitive_type (pointer_declarator "*__filename" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "Key name_key;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "sh_type = shdr->p_->sh_type;" (assignment_expression "sh_type = shdr->p_->sh_type" identifier = (field_expression "shdr->p_->sh_type" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "bVar6 = can_incremental_update(sh_type);" (assignment_expression "bVar6 = can_incremental_update(sh_type)" identifier = (call_expression "can_incremental_update(sh_type)" identifier (argument_list "(sh_type)" ( identifier )))) ;) (if_statement "if (!bVar6) {\n    return (Output_section *)0x0;\n  }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n    return (Output_section *)0x0;\n  }" { (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if ((parameters->options_->gdb_index_).value != false) {\n    bVar6 = sh_type == 0;\n    bVar11 = sh_type == 1;\n    if (bVar11) {\n      lVar8 = 0xb;\n      pbVar9 = (byte *)name;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      EVar3 = pSVar1->sh_flags;\n      uVar2 = pSVar1->sh_addr;\n      __filename = (char *)pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_size;\n      uVar5 = pSVar1->sh_addralign;\n      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n      goto LAB_001b6bfc;\n    }\n  }" if (parenthesized_expression "((parameters->options_->gdb_index_).value != false)" ( (binary_expression "(parameters->options_->gdb_index_).value != false" (field_expression "(parameters->options_->gdb_index_).value" (parenthesized_expression "(parameters->options_->gdb_index_)" ( (field_expression "parameters->options_->gdb_index_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n    bVar6 = sh_type == 0;\n    bVar11 = sh_type == 1;\n    if (bVar11) {\n      lVar8 = 0xb;\n      pbVar9 = (byte *)name;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      EVar3 = pSVar1->sh_flags;\n      uVar2 = pSVar1->sh_addr;\n      __filename = (char *)pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_size;\n      uVar5 = pSVar1->sh_addralign;\n      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n      goto LAB_001b6bfc;\n    }\n  }" { (expression_statement "bVar6 = sh_type == 0;" (assignment_expression "bVar6 = sh_type == 0" identifier = (binary_expression "sh_type == 0" identifier == number_literal)) ;) (expression_statement "bVar11 = sh_type == 1;" (assignment_expression "bVar11 = sh_type == 1" identifier = (binary_expression "sh_type == 1" identifier == number_literal)) ;) (if_statement "if (bVar11) {\n      lVar8 = 0xb;\n      pbVar9 = (byte *)name;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      EVar3 = pSVar1->sh_flags;\n      uVar2 = pSVar1->sh_addr;\n      __filename = (char *)pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_size;\n      uVar5 = pSVar1->sh_addralign;\n      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n      goto LAB_001b6bfc;\n    }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n      lVar8 = 0xb;\n      pbVar9 = (byte *)name;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      EVar3 = pSVar1->sh_flags;\n      uVar2 = pSVar1->sh_addr;\n      __filename = (char *)pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_size;\n      uVar5 = pSVar1->sh_addralign;\n      pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);\n      goto LAB_001b6bfc;\n    }" { (expression_statement "lVar8 = 0xb;" (assignment_expression "lVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)name;" (assignment_expression "pbVar9 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar10 = (byte *)".gdb_index";" (assignment_expression "pbVar10 = (byte *)".gdb_index"" identifier = (cast_expression "(byte *)".gdb_index"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gdb_index"" " string_content "))) ;) (do_statement "do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar6 = *pbVar9 < *pbVar10;\n        bVar11 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;\n      }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar9 < *pbVar10;" (assignment_expression "bVar6 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar11 = *pbVar9 == *pbVar10;" (assignment_expression "bVar11 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar6 && !bVar11) == bVar6) {\n        return (Output_section *)0x0;\n      }" if (parenthesized_expression "((!bVar6 && !bVar11) == bVar6)" ( (binary_expression "(!bVar6 && !bVar11) == bVar6" (parenthesized_expression "(!bVar6 && !bVar11)" ( (binary_expression "!bVar6 && !bVar11" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n        return (Output_section *)0x0;\n      }" { (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pSVar1 = shdr->p_;" (assignment_expression "pSVar1 = shdr->p_" identifier = (field_expression "shdr->p_" identifier -> field_identifier)) ;) (expression_statement "EVar3 = pSVar1->sh_flags;" (assignment_expression "EVar3 = pSVar1->sh_flags" identifier = (field_expression "pSVar1->sh_flags" identifier -> field_identifier)) ;) (expression_statement "uVar2 = pSVar1->sh_addr;" (assignment_expression "uVar2 = pSVar1->sh_addr" identifier = (field_expression "pSVar1->sh_addr" identifier -> field_identifier)) ;) (expression_statement "__filename = (char *)pSVar1->sh_offset;" (assignment_expression "__filename = (char *)pSVar1->sh_offset" identifier = (cast_expression "(char *)pSVar1->sh_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar1->sh_offset" identifier -> field_identifier))) ;) (expression_statement "EVar4 = pSVar1->sh_size;" (assignment_expression "EVar4 = pSVar1->sh_size" identifier = (field_expression "pSVar1->sh_size" identifier -> field_identifier)) ;) (expression_statement "uVar5 = pSVar1->sh_addralign;" (assignment_expression "uVar5 = pSVar1->sh_addralign" identifier = (field_expression "pSVar1->sh_addralign" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);" (assignment_expression "pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,name,true,&name_key)" identifier (argument_list "(&this->namepool_,name,true,&name_key)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , identifier , true , (pointer_expression "&name_key" & identifier) ))))) ;) (expression_statement "this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);" (assignment_expression "this_00 = get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false)" identifier = (call_expression "get_output_section(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false)" identifier (argument_list "(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false)" ( identifier , identifier , identifier , number_literal , identifier , identifier , false )))) ;) (labeled_statement "Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);" statement_identifier : (ERROR ":" :) (expression_statement "set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);" (call_expression "set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5)" identifier (argument_list "(this_00,uVar2,(off_t)__filename,EVar4,uVar5)" ( identifier , identifier , (cast_expression "(off_t)__filename" ( (type_descriptor "off_t" type_identifier) ) identifier) , identifier , identifier ))) ;)) (goto_statement "goto LAB_001b6bfc;" goto statement_identifier ;) })) })) (expression_statement "pSVar1 = shdr->p_;" (assignment_expression "pSVar1 = shdr->p_" identifier = (field_expression "shdr->p_" identifier -> field_identifier)) ;) (expression_statement "uVar2 = pSVar1->sh_addr;" (assignment_expression "uVar2 = pSVar1->sh_addr" identifier = (field_expression "pSVar1->sh_addr" identifier -> field_identifier)) ;) (expression_statement "EVar3 = pSVar1->sh_flags;" (assignment_expression "EVar3 = pSVar1->sh_flags" identifier = (field_expression "pSVar1->sh_flags" identifier -> field_identifier)) ;) (expression_statement "__filename = (char *)pSVar1->sh_offset;" (assignment_expression "__filename = (char *)pSVar1->sh_offset" identifier = (cast_expression "(char *)pSVar1->sh_offset" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar1->sh_offset" identifier -> field_identifier))) ;) (expression_statement "EVar4 = pSVar1->sh_size;" (assignment_expression "EVar4 = pSVar1->sh_size" identifier = (field_expression "pSVar1->sh_size" identifier -> field_identifier)) ;) (expression_statement "uVar5 = pSVar1->sh_addralign;" (assignment_expression "uVar5 = pSVar1->sh_addralign" identifier = (field_expression "pSVar1->sh_addralign" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);" (assignment_expression "pcVar7 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,name,true,&name_key)" identifier (argument_list "(&this->namepool_,name,true,&name_key)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , identifier , true , (pointer_expression "&name_key" & identifier) ))))) ;) (expression_statement "this_00 = get_output_section(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false);" (assignment_expression "this_00 = get_output_section(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false)" identifier = (call_expression "get_output_section(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false)" identifier (argument_list "(this,pcVar7,name_key,sh_type,EVar3,ORDER_INVALID,false)" ( identifier , identifier , identifier , identifier , identifier , identifier , false )))) ;) (labeled_statement "Output_section::set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);" statement_identifier : (ERROR ":" :) (expression_statement "set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5);" (call_expression "set_fixed_layout(this_00,uVar2,(off_t)__filename,EVar4,uVar5)" identifier (argument_list "(this_00,uVar2,(off_t)__filename,EVar4,uVar5)" ( identifier , identifier , (cast_expression "(off_t)__filename" ( (type_descriptor "off_t" type_identifier) ) identifier) , identifier , identifier ))) ;)) (if_statement "if (sh_type == 8) {\n    return this_00;\n  }" if (parenthesized_expression "(sh_type == 8)" ( (binary_expression "sh_type == 8" identifier == number_literal) )) (compound_statement "{\n    return this_00;\n  }" { (return_statement "return this_00;" return identifier ;) })) (labeled_statement "LAB_001b6bfc:\n  Free_list::remove(&this->free_list_,__filename);" statement_identifier : (labeled_statement "Free_list::remove(&this->free_list_,__filename);" statement_identifier : (ERROR ":" :) (expression_statement "remove(&this->free_list_,__filename);" (call_expression "remove(&this->free_list_,__filename)" identifier (argument_list "(&this->free_list_,__filename)" ( (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier)) , identifier ))) ;))) (return_statement "return this_00;" return identifier ;) }))
(translation_unit "undefined8 FUN_001b6a90(long param_1,byte *param_2,long *param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}\n\n" (function_definition "undefined8 FUN_001b6a90(long param_1,byte *param_2,long *param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}" type_identifier (function_declarator "FUN_001b6a90(long param_1,byte *param_2,long *param_3)" identifier (parameter_list "(long param_1,byte *param_2,long *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(*param_3 + 4);" (assignment_expression "iVar1 = *(int *)(*param_3 + 4)" identifier = (pointer_expression "*(int *)(*param_3 + 4)" * (cast_expression "(int *)(*param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 4)" ( (binary_expression "*param_3 + 4" (pointer_expression "*param_3" * identifier) + number_literal) ))))) ;) (expression_statement "cVar5 = FUN_00183010(iVar1);" (assignment_expression "cVar5 = FUN_00183010(iVar1)" identifier = (call_expression "FUN_00183010(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (if_statement "if (cVar5 == '\0') {\n    return 0;\n  }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }" { (expression_statement "bVar12 = iVar1 == 0;" (assignment_expression "bVar12 = iVar1 == 0" identifier = (binary_expression "iVar1 == 0" identifier == number_literal)) ;) (expression_statement "bVar13 = iVar1 == 1;" (assignment_expression "bVar13 = iVar1 == 1" identifier = (binary_expression "iVar1 == 1" identifier == number_literal)) ;) (if_statement "if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }" { (expression_statement "lVar8 = 0xb;" (assignment_expression "lVar8 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar9 = param_2;" (assignment_expression "pbVar9 = param_2" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)".gdb_index";" (assignment_expression "pbVar10 = (byte *)".gdb_index"" identifier = (cast_expression "(byte *)".gdb_index"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gdb_index"" " string_content "))) ;) (do_statement "do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar13 = *pbVar9 == *pbVar10;" (assignment_expression "bVar13 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar2 = *param_3;" (assignment_expression "lVar2 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar7 = *(undefined8 *)(lVar2 + 8);" (assignment_expression "uVar7 = *(undefined8 *)(lVar2 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 8)" * (cast_expression "(undefined8 *)(lVar2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x18)" identifier = (pointer_expression "*(long *)(lVar2 + 0x18)" * (cast_expression "(long *)(lVar2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = *(long *)(lVar2 + 0x20);" (assignment_expression "lVar11 = *(long *)(lVar2 + 0x20)" identifier = (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined8 *)(lVar2 + 0x30);" (assignment_expression "uVar4 = *(undefined8 *)(lVar2 + 0x30)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x30)" * (cast_expression "(undefined8 *)(lVar2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x30)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);" (assignment_expression "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier = (call_expression "FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier (argument_list "(param_1 + 0x10,param_2,1,local_40)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , identifier )))) ;) (expression_statement "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);" (assignment_expression "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0)" identifier = (call_expression "FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0)" identifier (argument_list "(param_1,uVar6,local_40[0],1,uVar7,0,0)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , number_literal , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);" (call_expression "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4)" identifier (argument_list "(uVar7,uVar3,lVar8,lVar11,uVar4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001b6bfc;" goto statement_identifier ;) })) })) (expression_statement "lVar2 = *param_3;" (assignment_expression "lVar2 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined8 *)(lVar2 + 8);" (assignment_expression "uVar7 = *(undefined8 *)(lVar2 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 8)" * (cast_expression "(undefined8 *)(lVar2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x18)" identifier = (pointer_expression "*(long *)(lVar2 + 0x18)" * (cast_expression "(long *)(lVar2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = *(long *)(lVar2 + 0x20);" (assignment_expression "lVar11 = *(long *)(lVar2 + 0x20)" identifier = (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined8 *)(lVar2 + 0x30);" (assignment_expression "uVar4 = *(undefined8 *)(lVar2 + 0x30)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x30)" * (cast_expression "(undefined8 *)(lVar2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x30)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);" (assignment_expression "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier = (call_expression "FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" identifier (argument_list "(param_1 + 0x10,param_2,1,local_40)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , identifier )))) ;) (expression_statement "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);" (assignment_expression "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" identifier = (call_expression "FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" identifier (argument_list "(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);" (call_expression "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4)" identifier (argument_list "(uVar7,uVar3,lVar8,lVar11,uVar4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar1 == 8) {\n    return uVar7;\n  }" if (parenthesized_expression "(iVar1 == 8)" ( (binary_expression "iVar1 == 8" identifier == number_literal) )) (compound_statement "{\n    return uVar7;\n  }" { (return_statement "return uVar7;" return identifier ;) })) (labeled_statement "LAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);" statement_identifier : (expression_statement "FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);" (call_expression "FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8)" identifier (argument_list "(param_1 + 0x468,lVar8,lVar11 + lVar8)" ( (binary_expression "param_1 + 0x468" identifier + number_literal) , identifier , (binary_expression "lVar11 + lVar8" identifier + identifier) ))) ;)) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (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) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , IDENT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + IDENT) ))) ;)) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_001b6a90(long param_1,byte *param_2,long *param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}" (type_identifier "undefined8") (function_declarator "FUN_001b6a90(long param_1,byte *param_2,long *param_3)" (identifier "FUN_001b6a90") (parameter_list "(long param_1,byte *param_2,long *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  long lVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined8 local_40 [2];\n  \n  bVar14 = 0;\n  iVar1 = *(int *)(*param_3 + 4);\n  cVar5 = FUN_00183010(iVar1);\n  if (cVar5 == '\0') {\n    return 0;\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }\n  lVar2 = *param_3;\n  uVar3 = *(undefined8 *)(lVar2 + 0x10);\n  uVar7 = *(undefined8 *)(lVar2 + 8);\n  lVar8 = *(long *)(lVar2 + 0x18);\n  lVar11 = *(long *)(lVar2 + 0x20);\n  uVar4 = *(undefined8 *)(lVar2 + 0x30);\n  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);\n  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n  if (iVar1 == 8) {\n    return uVar7;\n  }\nLAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);\n  return uVar7;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (declaration "undefined8 local_40 [2];" (type_identifier "undefined8") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" (identifier "bVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = *(int *)(*param_3 + 4);" (assignment_expression "iVar1 = *(int *)(*param_3 + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*param_3 + 4)" (* "*") (cast_expression "(int *)(*param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 4)" (( "(") (binary_expression "*param_3 + 4" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "cVar5 = FUN_00183010(iVar1);" (assignment_expression "cVar5 = FUN_00183010(iVar1)" (identifier "cVar5") (= "=") (call_expression "FUN_00183010(iVar1)" (identifier "FUN_00183010") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n    return 0;\n  }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x28d1")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar12 = iVar1 == 0;\n    bVar13 = iVar1 == 1;\n    if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }\n  }" ({ "{") (expression_statement "bVar12 = iVar1 == 0;" (assignment_expression "bVar12 = iVar1 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) (; ";")) (expression_statement "bVar13 = iVar1 == 1;" (assignment_expression "bVar13 = iVar1 == 1" (identifier "bVar13") (= "=") (binary_expression "iVar1 == 1" (identifier "iVar1") (== "==") (number_literal "1"))) (; ";")) (if_statement "if (bVar13) {\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n      lVar8 = 0xb;\n      pbVar9 = param_2;\n      pbVar10 = (byte *)".gdb_index";\n      do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }\n      lVar2 = *param_3;\n      uVar7 = *(undefined8 *)(lVar2 + 8);\n      uVar3 = *(undefined8 *)(lVar2 + 0x10);\n      lVar8 = *(long *)(lVar2 + 0x18);\n      lVar11 = *(long *)(lVar2 + 0x20);\n      uVar4 = *(undefined8 *)(lVar2 + 0x30);\n      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);\n      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);\n      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);\n      goto LAB_001b6bfc;\n    }" ({ "{") (expression_statement "lVar8 = 0xb;" (assignment_expression "lVar8 = 0xb" (identifier "lVar8") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar9 = param_2;" (assignment_expression "pbVar9 = param_2" (identifier "pbVar9") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar10 = (byte *)".gdb_index";" (assignment_expression "pbVar10 = (byte *)".gdb_index"" (identifier "pbVar10") (= "=") (cast_expression "(byte *)".gdb_index"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".gdb_index"" (" """) (string_content ".gdb_index") (" """)))) (; ";")) (do_statement "do {\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);" (do "do") (compound_statement "{\n        if (lVar8 == 0) break;\n        lVar8 = lVar8 + -1;\n        bVar12 = *pbVar9 < *pbVar10;\n        bVar13 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar8 == 0) break;" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar13 = *pbVar9 == *pbVar10;" (assignment_expression "bVar13 = *pbVar9 == *pbVar10" (identifier "bVar13") (= "=") (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar14 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" (( "(") (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" (( "(") (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" (! "!") (identifier "bVar12")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar12")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "lVar2 = *param_3;" (assignment_expression "lVar2 = *param_3" (identifier "lVar2") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar7 = *(undefined8 *)(lVar2 + 8);" (assignment_expression "uVar7 = *(undefined8 *)(lVar2 + 8)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "lVar8 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x18)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar2 + 0x18)" (* "*") (cast_expression "(long *)(lVar2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "lVar11 = *(long *)(lVar2 + 0x20);" (assignment_expression "lVar11 = *(long *)(lVar2 + 0x20)" (identifier "lVar11") (= "=") (pointer_expression "*(long *)(lVar2 + 0x20)" (* "*") (cast_expression "(long *)(lVar2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(undefined8 *)(lVar2 + 0x30);" (assignment_expression "uVar4 = *(undefined8 *)(lVar2 + 0x30)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x30)" (( "(") (binary_expression "lVar2 + 0x30" (identifier "lVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);" (assignment_expression "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" (identifier "uVar6") (= "=") (call_expression "FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" (identifier "FUN_0026e690") (argument_list "(param_1 + 0x10,param_2,1,local_40)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "param_2") (, ",") (number_literal "1") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);" (assignment_expression "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0)" (identifier "uVar7") (= "=") (call_expression "FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0)" (identifier "FUN_001acd20") (argument_list "(param_1,uVar6,local_40[0],1,uVar7,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar6") (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "uVar7") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);" (call_expression "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4)" (identifier "FUN_001f7080") (argument_list "(uVar7,uVar3,lVar8,lVar11,uVar4)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar3") (, ",") (identifier "lVar8") (, ",") (identifier "lVar11") (, ",") (identifier "uVar4") () ")"))) (; ";")) (goto_statement "goto LAB_001b6bfc;" (goto "goto") (statement_identifier "LAB_001b6bfc") (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar2 = *param_3;" (assignment_expression "lVar2 = *param_3" (identifier "lVar2") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar7 = *(undefined8 *)(lVar2 + 8);" (assignment_expression "uVar7 = *(undefined8 *)(lVar2 + 8)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar8 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x18)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar2 + 0x18)" (* "*") (cast_expression "(long *)(lVar2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "lVar11 = *(long *)(lVar2 + 0x20);" (assignment_expression "lVar11 = *(long *)(lVar2 + 0x20)" (identifier "lVar11") (= "=") (pointer_expression "*(long *)(lVar2 + 0x20)" (* "*") (cast_expression "(long *)(lVar2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(undefined8 *)(lVar2 + 0x30);" (assignment_expression "uVar4 = *(undefined8 *)(lVar2 + 0x30)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x30)" (( "(") (binary_expression "lVar2 + 0x30" (identifier "lVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);" (assignment_expression "uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" (identifier "uVar6") (= "=") (call_expression "FUN_0026e690(param_1 + 0x10,param_2,1,local_40)" (identifier "FUN_0026e690") (argument_list "(param_1 + 0x10,param_2,1,local_40)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "param_2") (, ",") (number_literal "1") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);" (assignment_expression "uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" (identifier "uVar7") (= "=") (call_expression "FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" (identifier "FUN_001acd20") (argument_list "(param_1,uVar6,local_40[0],iVar1,uVar7,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar6") (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "iVar1") (, ",") (identifier "uVar7") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);" (call_expression "FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4)" (identifier "FUN_001f7080") (argument_list "(uVar7,uVar3,lVar8,lVar11,uVar4)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar3") (, ",") (identifier "lVar8") (, ",") (identifier "lVar11") (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if (iVar1 == 8) {\n    return uVar7;\n  }" (if "if") (parenthesized_expression "(iVar1 == 8)" (( "(") (binary_expression "iVar1 == 8" (identifier "iVar1") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n    return uVar7;\n  }" ({ "{") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (labeled_statement "LAB_001b6bfc:\n  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);" (statement_identifier "LAB_001b6bfc") (: ":") (expression_statement "FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);" (call_expression "FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8)" (identifier "FUN_001a46a0") (argument_list "(param_1 + 0x468,lVar8,lVar11 + lVar8)" (( "(") (binary_expression "param_1 + 0x468" (identifier "param_1") (+ "+") (number_literal "0x468")) (, ",") (identifier "lVar8") (, ",") (binary_expression "lVar11 + lVar8" (identifier "lVar11") (+ "+") (identifier "lVar8")) () ")"))) (; ";"))) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: init_fixed_output_section<64, false>
   DWARF original prototype: Output_section * init_fixed_output_section<64,_false>(Layout * this,
   char * name, Shdr<64,_false> * shdr) */

type_4 * __thiscall
gold::Layout::init_fixed_output_section<64,_false>(Layout *this,var_10 *name,Shdr<64,_false> *shdr)

{
  type_1 var_4;
  var_1<64> *pSVar1;
  uint64_t uVar2;
  type_2 EVar3;
  type_3 EVar4;
  uint64_t uVar5;
  bool var_8;
  char *pcVar7;
  type_4 *this_00;
  long var_5;
  type_5 *var_6;
  type_5 *var_7;
  char *__filename;
  bool bVar11;
  type_5 bVar12;
  type_6 name_key;
  
  bVar12 = 0;
  var_4 = shdr->p_->var_4;
  var_8 = var_2(var_4);
  if (!var_8) {
    return (type_4 *)0x0;
  }
  if (parameters->options_ == (type_7 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("../../gold/parameters.h",0x5c,"options");
  }
  if ((parameters->options_->gdb_index_).value != false) {
    var_8 = var_4 == 0;
    bVar11 = var_4 == 1;
    if (bVar11) {
      var_5 = 0xb;
      var_6 = (type_5 *)name;
      var_7 = (type_5 *)".gdb_index";
      do {
        if (var_5 == 0) break;
        var_5 = var_5 + -1;
        var_8 = *var_6 < *var_7;
        bVar11 = *var_6 == *var_7;
        var_6 = var_6 + (type_8)bVar12 * -2 + 1;
        var_7 = var_7 + (type_8)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!var_8 && !bVar11) == var_8) {
        return (type_4 *)0x0;
      }
      pSVar1 = shdr->p_;
      EVar3 = pSVar1->sh_flags;
      uVar2 = pSVar1->sh_addr;
      __filename = (char *)pSVar1->sh_offset;
      EVar4 = pSVar1->sh_size;
      uVar5 = pSVar1->sh_addralign;
      pcVar7 = var_9<var_10>::var_11(&this->namepool_,name,true,&name_key);
      this_00 = var_12(this,pcVar7,name_key,1,EVar3,ORDER_INVALID,false);
      Output_section::var_13(this_00,uVar2,(type_9)__filename,EVar4,uVar5);
      goto LAB_001b6bfc;
    }
  }
  pSVar1 = shdr->p_;
  uVar2 = pSVar1->sh_addr;
  EVar3 = pSVar1->sh_flags;
  __filename = (char *)pSVar1->sh_offset;
  EVar4 = pSVar1->sh_size;
  uVar5 = pSVar1->sh_addralign;
  pcVar7 = var_9<var_10>::var_11(&this->namepool_,name,true,&name_key);
  this_00 = var_12(this,pcVar7,name_key,var_4,EVar3,ORDER_INVALID,false);
  Output_section::var_13(this_00,uVar2,(type_9)__filename,EVar4,uVar5);
  if (var_4 == 8) {
    return this_00;
  }
LAB_001b6bfc:
  Free_list::var_14(&this->free_list_,__filename);
  return this_00;
}


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

undefined8 MASKED(long param_1,byte *param_2,long *param_3)

{
  int iVar1;
  long lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  char cVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  byte *pbVar9;
  byte *pbVar10;
  long lVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  undefined8 local_40 [2];
  
  bVar14 = 0;
  iVar1 = *(int *)(*param_3 + 4);
  cVar5 = FUN_00183010(iVar1);
  if (cVar5 == '\0') {
    return 0;
  }
  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x28d1) != '\0') {
    bVar12 = iVar1 == 0;
    bVar13 = iVar1 == 1;
    if (bVar13) {
      lVar8 = 0xb;
      pbVar9 = param_2;
      pbVar10 = (byte *)".gdb_index";
      do {
        if (lVar8 == 0) break;
        lVar8 = lVar8 + -1;
        bVar12 = *pbVar9 < *pbVar10;
        bVar13 = *pbVar9 == *pbVar10;
        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
        pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;
      } while (bVar13);
      if ((!bVar12 && !bVar13) == bVar12) {
        return 0;
      }
      lVar2 = *param_3;
      uVar7 = *(undefined8 *)(lVar2 + 8);
      uVar3 = *(undefined8 *)(lVar2 + 0x10);
      lVar8 = *(long *)(lVar2 + 0x18);
      lVar11 = *(long *)(lVar2 + 0x20);
      uVar4 = *(undefined8 *)(lVar2 + 0x30);
      uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);
      uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],1,uVar7,0,0);
      FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);
      goto LAB_001b6bfc;
    }
  }
  lVar2 = *param_3;
  uVar3 = *(undefined8 *)(lVar2 + 0x10);
  uVar7 = *(undefined8 *)(lVar2 + 8);
  lVar8 = *(long *)(lVar2 + 0x18);
  lVar11 = *(long *)(lVar2 + 0x20);
  uVar4 = *(undefined8 *)(lVar2 + 0x30);
  uVar6 = FUN_0026e690(param_1 + 0x10,param_2,1,local_40);
  uVar7 = FUN_001acd20(param_1,uVar6,local_40[0],iVar1,uVar7,0,0);
  FUN_001f7080(uVar7,uVar3,lVar8,lVar11,uVar4);
  if (iVar1 == 8) {
    return uVar7;
  }
LAB_001b6bfc:
  FUN_001a46a0(param_1 + 0x468,lVar8,lVar11 + lVar8);
  return uVar7;
}

