
/* DWARF original prototype: void do_write(Output_data_got<64,_true> * this, Output_file * of) */

void __thiscall
gold::Output_data_got<64,_true>::do_write(Output_data_got<64,_true> *this,Output_file *of)

{
  byte bVar1;
  long lVar2;
  long lVar3;
  uchar *puVar4;
  pointer pGVar5;
  Output_file *in_RCX;
  pointer __n;
  size_t in_RDX;
  ulong uVar6;
  uchar *__buf;
  uchar *puVar7;
  
  bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.
          super_Output_section_data.super_Output_data.field_0x20;
  if ((bVar1 & 4) != 0) {
    lVar2 = (this->super_Output_data_got_base).super_Output_section_data_build.
            super_Output_section_data.super_Output_data.offset_;
    if ((bVar1 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
    }
    lVar3 = (this->super_Output_data_got_base).super_Output_section_data_build.
            super_Output_section_data.super_Output_data.data_size_;
    if ((-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_)) {
      puVar4 = of->base_;
      __n = (this->entries_).
            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
            ._M_impl._M_start;
      if (__n == (this->entries_).
                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
                 ._M_impl._M_finish) {
        if (lVar3 != 0) goto LAB_001cfd8d;
      }
      else {
        uVar6 = 0;
        __buf = puVar4 + lVar2;
        do {
          puVar7 = __buf + 8;
          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);
          pGVar5 = (this->entries_).
                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
                   ._M_impl._M_finish;
          __n = (this->entries_).
                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
                ._M_impl._M_start;
          uVar6 = (ulong)((int)uVar6 + 1);
          __buf = puVar7;
        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));
        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {
LAB_001cfd8d:
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");
        }
        if (__n != pGVar5) {
          (this->entries_).
          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
          ._M_impl._M_finish = __n;
        }
      }
      return;
    }
    Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX);
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xe3,"offset");
}



void FUN_001cfcc0(long param_1,long param_2)

{
  long lVar1;
  long lVar2;
  ulong uVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  
  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {
    lVar4 = *(long *)(param_1 + 0x18);
    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");
    }
    lVar1 = *(long *)(param_1 + 0x10);
    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {
      lVar4 = lVar4 + *(long *)(param_2 + 0x18);
      lVar2 = *(long *)(param_1 + 0x38);
      if (lVar2 == *(long *)(param_1 + 0x40)) {
        if (lVar1 != 0) goto LAB_001cfd8d;
      }
      else {
        uVar3 = 0;
        lVar5 = lVar4;
        do {
          lVar6 = lVar5 + 8;
          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);
          lVar2 = *(long *)(param_1 + 0x38);
          uVar3 = (ulong)((int)uVar3 + 1);
          lVar5 = lVar6;
        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));
        if (lVar1 != lVar6 - lVar4) {
LAB_001cfd8d:
                    /* WARNING: Subroutine does not return */
          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");
        }
        if (lVar2 != *(long *)(param_1 + 0x40)) {
          *(long *)(param_1 + 0x40) = lVar2;
        }
      }
      return;
    }
    FUN_001bf770();
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOVZX EAX,byte ptr [RDI + 0x20]
TEST AL,0x4
JZ 0x001cfdaa
MOV R15,RDI
MOV RBP,qword ptr [RDI + 0x18]
TEST AL,0x2
JZ 0x001cfdc2
MOV R12,qword ptr [RDI + 0x10]
TEST RBP,RBP
JS 0x001cfda5
LEA RAX,[R12 + RBP*0x1]
CMP qword ptr [RSI + 0x10],RAX
JL 0x001cfda5
ADD RBP,qword ptr [RSI + 0x18]
MOV RCX,qword ptr [RDI + 0x38]
CMP RCX,qword ptr [RDI + 0x40]
JZ 0x001cfd88
MOV R14,RBP
XOR R13D,R13D
XOR EDX,EDX
MOV RBX,-0x5555555555555555
NOP dword ptr [RAX]
LEA RAX,[RDX + RDX*0x2]
MOV ESI,R13D
MOV RDX,R14
ADD R14,0x8
LEA RDI,[RCX + RAX*0x8]
CALL 0x001cfac0
MOV RSI,qword ptr [R15 + 0x40]
MOV RCX,qword ptr [R15 + 0x38]
LEA EDX,[R13 + 0x1]
MOV R13,RDX
MOV RAX,RSI
SUB RAX,RCX
SAR RAX,0x3
IMUL RAX,RBX
CMP RDX,RAX
JC 0x001cfd28
SUB R14,RBP
CMP R12,R14
JNZ 0x001cfd8d
CMP RCX,RSI
JZ 0x001cfd72
MOV qword ptr [R15 + 0x40],RCX
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
TEST R12,R12
JZ 0x001cfd72
LEA RDX,[0x318a58]
MOV ESI,0x6d9
LEA RDI,[0x31856f]
CALL 0x0016cdf0
CALL 0x001bf770
LEA RDX,[0x319eef]
MOV ESI,0xe3
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x319f70]
MOV ESI,0xcf
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
(translation_unit "void FUN_001cfcc0(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}\n\n" (function_definition "void FUN_001cfcc0(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}" primitive_type (function_declarator "FUN_001cfcc0(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }" { (expression_statement "lVar4 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }" if (parenthesized_expression "((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10)))" ( (binary_expression "(-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar4)" ( (binary_expression "-1 < lVar4" number_literal < identifier) )) && (parenthesized_expression "(lVar1 + lVar4 <= *(long *)(param_2 + 0x10))" ( (binary_expression "lVar1 + lVar4 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar1 + lVar4" identifier + identifier) <= (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }" { (expression_statement "lVar4 = lVar4 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar4 = lVar4 + *(long *)(param_2 + 0x18)" identifier = (binary_expression "lVar4 + *(long *)(param_2 + 0x18)" identifier + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))))) ;) (expression_statement "lVar2 = *(long *)(param_1 + 0x38);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x38)" identifier = (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" if (parenthesized_expression "(lVar2 == *(long *)(param_1 + 0x40))" ( (binary_expression "lVar2 == *(long *)(param_1 + 0x40)" identifier == (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) )) (compound_statement "{\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }" { (if_statement "if (lVar1 != 0) goto LAB_001cfd8d;" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001cfd8d;" goto statement_identifier ;)) }) (else_clause "else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" else (compound_statement "{\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "lVar5 = lVar4;" (assignment_expression "lVar5 = lVar4" identifier = identifier) ;) (do_statement "do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));" do (compound_statement "{\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        }" { (expression_statement "lVar6 = lVar5 + 8;" (assignment_expression "lVar6 = lVar5 + 8" identifier = (binary_expression "lVar5 + 8" identifier + number_literal)) ;) (expression_statement "FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);" (call_expression "FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5)" identifier (argument_list "(lVar2 + uVar3 * 0x18,uVar3,lVar5)" ( (binary_expression "lVar2 + uVar3 * 0x18" identifier + (binary_expression "uVar3 * 0x18" identifier * number_literal)) , identifier , identifier ))) ;) (expression_statement "lVar2 = *(long *)(param_1 + 0x38);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x38)" identifier = (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)((int)uVar3 + 1);" (assignment_expression "uVar3 = (ulong)((int)uVar3 + 1)" identifier = (call_expression "(ulong)((int)uVar3 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar3 + 1)" ( (binary_expression "(int)uVar3 + 1" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "lVar5 = lVar6;" (assignment_expression "lVar5 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0x40) - lVar2 >> 3)" ( (binary_expression "*(long *)(param_1 + 0x40) - lVar2 >> 3" (binary_expression "*(long *)(param_1 + 0x40) - lVar2" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal) )))) )) ;) (if_statement "if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }" if (parenthesized_expression "(lVar1 != lVar6 - lVar4)" ( (binary_expression "lVar1 != lVar6 - lVar4" identifier != (binary_expression "lVar6 - lVar4" identifier - identifier)) )) (compound_statement "{\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }" { (labeled_statement "LAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");" statement_identifier : comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write")" identifier (argument_list "("../../gold/output.cc",0x6d9,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;)) })) (if_statement "if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }" if (parenthesized_expression "(lVar2 != *(long *)(param_1 + 0x40))" ( (binary_expression "lVar2 != *(long *)(param_1 + 0x40)" identifier != (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) )) (compound_statement "{\n          *(long *)(param_1 + 0x40) = lVar2;\n        }" { (expression_statement "*(long *)(param_1 + 0x40) = lVar2;" (assignment_expression "*(long *)(param_1 + 0x40) = lVar2" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) })) }))) (return_statement "return;" return ;) })) (expression_statement "FUN_001bf770();" (call_expression "FUN_001bf770()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: void do_write(Output_data_got<64,_true> * this, Output_file * of) */\n\nvoid __thiscall\ngold::Output_data_got<64,_true>::do_write(Output_data_got<64,_true> *this,Output_file *of)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  uchar *puVar4;\n  pointer pGVar5;\n  Output_file *in_RCX;\n  pointer __n;\n  size_t in_RDX;\n  ulong uVar6;\n  uchar *__buf;\n  uchar *puVar7;\n  \n  bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20;\n  if ((bVar1 & 4) != 0) {\n    lVar2 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.offset_;\n    if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar3 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.data_size_;\n    if ((-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_)) {\n      puVar4 = of->base_;\n      __n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start;\n      if (__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish) {\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }\n      return;\n    }\n    Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX);\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n}\n\n" comment (declaration "void __thiscall\ngold::Output_data_got<64,_true>::do_write(Output_data_got<64,_true> *this,Output_file *of)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::do_write(Output_data_got<64,_true> *this,Output_file *of)\n\n{\n  byte" identifier > : : (function_declarator "do_write(Output_data_got<64,_true> *this,Output_file *of)" identifier (parameter_list "(Output_data_got<64,_true> *this,Output_file *of)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) { identifier) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "pointer pGVar5;" type_identifier identifier ;) (declaration "Output_file *in_RCX;" type_identifier (pointer_declarator "*in_RCX" * identifier) ;) (declaration "pointer __n;" type_identifier identifier ;) (declaration "size_t in_RDX;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "uchar *__buf;" type_identifier (pointer_declarator "*__buf" * identifier) ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (expression_statement "bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20;" (assignment_expression "bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar1 & 4) != 0) {\n    lVar2 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.offset_;\n    if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar3 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.data_size_;\n    if ((-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_)) {\n      puVar4 = of->base_;\n      __n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start;\n      if (__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish) {\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }\n      return;\n    }\n    Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX);\n  }" if (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar2 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.offset_;\n    if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar3 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.data_size_;\n    if ((-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_)) {\n      puVar4 = of->base_;\n      __n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start;\n      if (__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish) {\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }\n      return;\n    }\n    Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX);\n  }" { (expression_statement "lVar2 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.offset_;" (assignment_expression "lVar2 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.offset_" identifier = (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.offset_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (expression_statement "lVar3 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.data_size_;" (assignment_expression "lVar3 = (this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.data_size_" identifier = (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data.data_size_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n            super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_)) {\n      puVar4 = of->base_;\n      __n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start;\n      if (__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish) {\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }\n      return;\n    }" if (parenthesized_expression "((-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_))" ( (binary_expression "(-1 < lVar2) && (lVar3 + lVar2 <= of->file_size_)" (parenthesized_expression "(-1 < lVar2)" ( (binary_expression "-1 < lVar2" number_literal < identifier) )) && (parenthesized_expression "(lVar3 + lVar2 <= of->file_size_)" ( (binary_expression "lVar3 + lVar2 <= of->file_size_" (binary_expression "lVar3 + lVar2" identifier + identifier) <= (field_expression "of->file_size_" identifier -> field_identifier)) ))) )) (compound_statement "{\n      puVar4 = of->base_;\n      __n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start;\n      if (__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish) {\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }\n      return;\n    }" { (expression_statement "puVar4 = of->base_;" (assignment_expression "puVar4 = of->base_" identifier = (field_expression "of->base_" identifier -> field_identifier)) ;) (ERROR "__n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "__n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "__n = (this->entries_).\n            super__Vector_base<gold::Output_data_got<64" (assignment_expression "__n = (this->entries_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->entries_).\n            super__Vector_base<gold" (field_expression "(this->entries_).\n            super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start;" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n            ._M_impl._M_start" (binary_expression "Output_data_got<64" identifier < number_literal) , (field_expression "_true>::Got_entry>_>\n            ._M_impl._M_start" (field_expression "_true>::Got_entry>_>\n            ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (if_statement "if (__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish) {\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }" if (parenthesized_expression "(__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish)" ( (ERROR "__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "__n == (this->entries_).\n                 super__Vector_base<gold::Output_data_got<64" (binary_expression "__n == (this->entries_).\n                 super__Vector_base<gold" identifier == (binary_expression "(this->entries_).\n                 super__Vector_base<gold" (field_expression "(this->entries_).\n                 super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n                 ._M_impl._M_finish" (binary_expression "Output_data_got<64" identifier < number_literal) , (field_expression "_true>::Got_entry>_>\n                 ._M_impl._M_finish" (field_expression "_true>::Got_entry>_>\n                 ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) )) (compound_statement "{\n        if (lVar3 != 0) goto LAB_001cfd8d;\n      }" { (if_statement "if (lVar3 != 0) goto LAB_001cfd8d;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001cfd8d;" goto statement_identifier ;)) }) (else_clause "else {\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }" else (compound_statement "{\n        uVar6 = 0;\n        __buf = puVar4 + lVar2;\n        do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));\n        if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "__buf = puVar4 + lVar2;" (assignment_expression "__buf = puVar4 + lVar2" identifier = (binary_expression "puVar4 + lVar2" identifier + identifier)) ;) (do_statement "do {\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        } while (uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555));" do (compound_statement "{\n          puVar7 = __buf + 8;\n          Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);\n          pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;\n          __n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;\n          uVar6 = (ulong)((int)uVar6 + 1);\n          __buf = puVar7;\n        }" { (expression_statement "puVar7 = __buf + 8;" (assignment_expression "puVar7 = __buf + 8" identifier = (binary_expression "__buf + 8" identifier + number_literal)) ;) (labeled_statement "Got_entry::write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);" statement_identifier : (ERROR ":" :) (expression_statement "write(__n + uVar6,(int)uVar6,__buf,(size_t)__n);" (call_expression "write(__n + uVar6,(int)uVar6,__buf,(size_t)__n)" identifier (argument_list "(__n + uVar6,(int)uVar6,__buf,(size_t)__n)" ( (binary_expression "__n + uVar6" identifier + identifier) , (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;)) (ERROR "pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "pGVar5 = (this->entries_).\n                   super__Vector_base<gold::Output_data_got<64" (assignment_expression "pGVar5 = (this->entries_).\n                   super__Vector_base<gold" identifier = (binary_expression "(this->entries_).\n                   super__Vector_base<gold" (field_expression "(this->entries_).\n                   super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish;" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n                   ._M_impl._M_finish" (binary_expression "Output_data_got<64" identifier < number_literal) , (field_expression "_true>::Got_entry>_>\n                   ._M_impl._M_finish" (field_expression "_true>::Got_entry>_>\n                   ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (ERROR "__n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "__n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "__n = (this->entries_).\n                super__Vector_base<gold::Output_data_got<64" (assignment_expression "__n = (this->entries_).\n                super__Vector_base<gold" identifier = (binary_expression "(this->entries_).\n                super__Vector_base<gold" (field_expression "(this->entries_).\n                super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start;" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n                ._M_impl._M_start" (binary_expression "Output_data_got<64" identifier < number_literal) , (field_expression "_true>::Got_entry>_>\n                ._M_impl._M_start" (field_expression "_true>::Got_entry>_>\n                ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (expression_statement "uVar6 = (ulong)((int)uVar6 + 1);" (assignment_expression "uVar6 = (ulong)((int)uVar6 + 1)" identifier = (call_expression "(ulong)((int)uVar6 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar6 + 1)" ( (binary_expression "(int)uVar6 + 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "__buf = puVar7;" (assignment_expression "__buf = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555))" ( (binary_expression "uVar6 < (ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555)" ( (binary_expression "((long)pGVar5 - (long)__n >> 3) * -0x5555555555555555" (parenthesized_expression "((long)pGVar5 - (long)__n >> 3)" ( (binary_expression "(long)pGVar5 - (long)__n >> 3" (binary_expression "(long)pGVar5 - (long)__n" (cast_expression "(long)pGVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__n" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (if_statement "if (lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)) {\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }" if (parenthesized_expression "(lVar3 != (long)puVar7 - (long)(puVar4 + lVar2))" ( (binary_expression "lVar3 != (long)puVar7 - (long)(puVar4 + lVar2)" identifier != (binary_expression "(long)puVar7 - (long)(puVar4 + lVar2)" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)(puVar4 + lVar2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar4 + lVar2)" ( (binary_expression "puVar4 + lVar2" identifier + identifier) ))))) )) (compound_statement "{\nLAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");\n        }" { (labeled_statement "LAB_001cfd8d:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x6d9,"do_write")" identifier (argument_list "("../../gold/output.cc",0x6d9,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;)) })) (if_statement "if (__n != pGVar5) {\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }" if (parenthesized_expression "(__n != pGVar5)" ( (binary_expression "__n != pGVar5" identifier != identifier) )) (compound_statement "{\n          (this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;\n        }" { (ERROR "(this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "(this->entries_).\n          super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "(this->entries_).\n          super__Vector_base<gold::Output_data_got<64" (binary_expression "(this->entries_).\n          super__Vector_base<gold" (field_expression "(this->entries_).\n          super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n;" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n          ._M_impl._M_finish = __n" (binary_expression "Output_data_got<64" identifier < number_literal) , (assignment_expression "_true>::Got_entry>_>\n          ._M_impl._M_finish = __n" (field_expression "_true>::Got_entry>_>\n          ._M_impl._M_finish" (field_expression "_true>::Got_entry>_>\n          ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier)) ;) })) }))) (return_statement "return;" return ;) })) (labeled_statement "Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX);" statement_identifier : (ERROR ":" :) (expression_statement "get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX);" (call_expression "get_output_view((Output_file *)this,(off_t)of,in_RDX,in_RCX)" identifier (argument_list "((Output_file *)this,(off_t)of,in_RDX,in_RCX)" ( (cast_expression "(Output_file *)this" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(off_t)of" ( (type_descriptor "off_t" type_identifier) ) identifier) , identifier , identifier ))) ;)) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) (ERROR "}" }))
(translation_unit "void FUN_001cfcc0(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    \n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}\n\n" (function_definition "void FUN_001cfcc0(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    \n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}" primitive_type (function_declarator "FUN_001cfcc0(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    \n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }" { (expression_statement "lVar4 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }" if (parenthesized_expression "((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10)))" ( (binary_expression "(-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar4)" ( (binary_expression "-1 < lVar4" number_literal < identifier) )) && (parenthesized_expression "(lVar1 + lVar4 <= *(long *)(param_2 + 0x10))" ( (binary_expression "lVar1 + lVar4 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar1 + lVar4" identifier + identifier) <= (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }" { (expression_statement "lVar4 = lVar4 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar4 = lVar4 + *(long *)(param_2 + 0x18)" identifier = (binary_expression "lVar4 + *(long *)(param_2 + 0x18)" identifier + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))))) ;) (expression_statement "lVar2 = *(long *)(param_1 + 0x38);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x38)" identifier = (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" if (parenthesized_expression "(lVar2 == *(long *)(param_1 + 0x40))" ( (binary_expression "lVar2 == *(long *)(param_1 + 0x40)" identifier == (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) )) (compound_statement "{\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }" { (if_statement "if (lVar1 != 0) goto LAB_001cfd8d;" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001cfd8d;" goto statement_identifier ;)) }) (else_clause "else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" else (compound_statement "{\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "lVar5 = lVar4;" (assignment_expression "lVar5 = lVar4" identifier = identifier) ;) (do_statement "do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));" do (compound_statement "{\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        }" { (expression_statement "lVar6 = lVar5 + 8;" (assignment_expression "lVar6 = lVar5 + 8" identifier = (binary_expression "lVar5 + 8" identifier + number_literal)) ;) (expression_statement "FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);" (call_expression "FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5)" identifier (argument_list "(lVar2 + uVar3 * 0x18,uVar3,lVar5)" ( (binary_expression "lVar2 + uVar3 * 0x18" identifier + (binary_expression "uVar3 * 0x18" identifier * number_literal)) , identifier , identifier ))) ;) (expression_statement "lVar2 = *(long *)(param_1 + 0x38);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x38)" identifier = (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)((int)uVar3 + 1);" (assignment_expression "uVar3 = (ulong)((int)uVar3 + 1)" identifier = (call_expression "(ulong)((int)uVar3 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar3 + 1)" ( (binary_expression "(int)uVar3 + 1" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "lVar5 = lVar6;" (assignment_expression "lVar5 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0x40) - lVar2 >> 3)" ( (binary_expression "*(long *)(param_1 + 0x40) - lVar2 >> 3" (binary_expression "*(long *)(param_1 + 0x40) - lVar2" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal) )))) )) ;) (if_statement "if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }" if (parenthesized_expression "(lVar1 != lVar6 - lVar4)" ( (binary_expression "lVar1 != lVar6 - lVar4" identifier != (binary_expression "lVar6 - lVar4" identifier - identifier)) )) (compound_statement "{\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }" { (labeled_statement "LAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");" statement_identifier : (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write")" identifier (argument_list "("../../gold/output.cc",0x6d9,"do_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;)) })) (if_statement "if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }" if (parenthesized_expression "(lVar2 != *(long *)(param_1 + 0x40))" ( (binary_expression "lVar2 != *(long *)(param_1 + 0x40)" identifier != (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) )) (compound_statement "{\n          *(long *)(param_1 + 0x40) = lVar2;\n        }" { (expression_statement "*(long *)(param_1 + 0x40) = lVar2;" (assignment_expression "*(long *)(param_1 + 0x40) = lVar2" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) })) }))) (return_statement "return;" return ;) })) (expression_statement "FUN_001bf770();" (call_expression "FUN_001bf770()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT , IDENT ))) ;) (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) >> LIT) )) * LIT) )))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT - IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) }))) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_001cfcc0(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    \n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}" (primitive_type "void") (function_declarator "FUN_001cfcc0(long param_1,long param_2)" (identifier "FUN_001cfcc0") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }\n                    \n  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar4 = *(long *)(param_1 + 0x18);\n    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar1 = *(long *)(param_1 + 0x10);\n    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }\n    FUN_001bf770();\n  }" ({ "{") (expression_statement "lVar4 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x18)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xcf,"data_size")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xcf") (, ",") (string_literal ""data_size"" (" """) (string_content "data_size") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }" (if "if") (parenthesized_expression "((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10)))" (( "(") (binary_expression "(-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar4)" (( "(") (binary_expression "-1 < lVar4" (number_literal "-1") (< "<") (identifier "lVar4")) () ")")) (&& "&&") (parenthesized_expression "(lVar1 + lVar4 <= *(long *)(param_2 + 0x10))" (( "(") (binary_expression "lVar1 + lVar4 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar1 + lVar4" (identifier "lVar1") (+ "+") (identifier "lVar4")) (<= "<=") (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      lVar4 = lVar4 + *(long *)(param_2 + 0x18);\n      lVar2 = *(long *)(param_1 + 0x38);\n      if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }\n      return;\n    }" ({ "{") (expression_statement "lVar4 = lVar4 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar4 = lVar4 + *(long *)(param_2 + 0x18)" (identifier "lVar4") (= "=") (binary_expression "lVar4 + *(long *)(param_2 + 0x18)" (identifier "lVar4") (+ "+") (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (expression_statement "lVar2 = *(long *)(param_1 + 0x38);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x38)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (if_statement "if (lVar2 == *(long *)(param_1 + 0x40)) {\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }\n      else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" (if "if") (parenthesized_expression "(lVar2 == *(long *)(param_1 + 0x40))" (( "(") (binary_expression "lVar2 == *(long *)(param_1 + 0x40)" (identifier "lVar2") (== "==") (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (compound_statement "{\n        if (lVar1 != 0) goto LAB_001cfd8d;\n      }" ({ "{") (if_statement "if (lVar1 != 0) goto LAB_001cfd8d;" (if "if") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001cfd8d;" (goto "goto") (statement_identifier "LAB_001cfd8d") (; ";"))) (} "}")) (else_clause "else {\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" (else "else") (compound_statement "{\n        uVar3 = 0;\n        lVar5 = lVar4;\n        do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));\n        if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }\n        if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }\n      }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar5 = lVar4;" (assignment_expression "lVar5 = lVar4" (identifier "lVar5") (= "=") (identifier "lVar4")) (; ";")) (do_statement "do {\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));" (do "do") (compound_statement "{\n          lVar6 = lVar5 + 8;\n          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);\n          lVar2 = *(long *)(param_1 + 0x38);\n          uVar3 = (ulong)((int)uVar3 + 1);\n          lVar5 = lVar6;\n        }" ({ "{") (expression_statement "lVar6 = lVar5 + 8;" (assignment_expression "lVar6 = lVar5 + 8" (identifier "lVar6") (= "=") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);" (call_expression "FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5)" (identifier "FUN_001cfac0") (argument_list "(lVar2 + uVar3 * 0x18,uVar3,lVar5)" (( "(") (binary_expression "lVar2 + uVar3 * 0x18" (identifier "lVar2") (+ "+") (binary_expression "uVar3 * 0x18" (identifier "uVar3") (* "*") (number_literal "0x18"))) (, ",") (identifier "uVar3") (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "lVar2 = *(long *)(param_1 + 0x38);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x38)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "uVar3 = (ulong)((int)uVar3 + 1);" (assignment_expression "uVar3 = (ulong)((int)uVar3 + 1)" (identifier "uVar3") (= "=") (call_expression "(ulong)((int)uVar3 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)uVar3 + 1)" (( "(") (binary_expression "(int)uVar3 + 1" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "lVar5 = lVar6;" (assignment_expression "lVar5 = lVar6" (identifier "lVar5") (= "=") (identifier "lVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555))" (( "(") (binary_expression "uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" (identifier "uVar3") (< "<") (call_expression "(ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555)" (( "(") (binary_expression "(*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0x40) - lVar2 >> 3)" (( "(") (binary_expression "*(long *)(param_1 + 0x40) - lVar2 >> 3" (binary_expression "*(long *)(param_1 + 0x40) - lVar2" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (- "-") (identifier "lVar2")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555")) () ")")))) () ")")) (; ";")) (if_statement "if (lVar1 != lVar6 - lVar4) {\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }" (if "if") (parenthesized_expression "(lVar1 != lVar6 - lVar4)" (( "(") (binary_expression "lVar1 != lVar6 - lVar4" (identifier "lVar1") (!= "!=") (binary_expression "lVar6 - lVar4" (identifier "lVar6") (- "-") (identifier "lVar4"))) () ")")) (compound_statement "{\nLAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");\n        }" ({ "{") (labeled_statement "LAB_001cfd8d:\n                    \n          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");" (statement_identifier "LAB_001cfd8d") (: ":") (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x6d9,"do_write")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x6d9") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";"))) (} "}"))) (if_statement "if (lVar2 != *(long *)(param_1 + 0x40)) {\n          *(long *)(param_1 + 0x40) = lVar2;\n        }" (if "if") (parenthesized_expression "(lVar2 != *(long *)(param_1 + 0x40))" (( "(") (binary_expression "lVar2 != *(long *)(param_1 + 0x40)" (identifier "lVar2") (!= "!=") (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (compound_statement "{\n          *(long *)(param_1 + 0x40) = lVar2;\n        }" ({ "{") (expression_statement "*(long *)(param_1 + 0x40) = lVar2;" (assignment_expression "*(long *)(param_1 + 0x40) = lVar2" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "lVar2")) (; ";")) (} "}"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_001bf770();" (call_expression "FUN_001bf770()" (identifier "FUN_001bf770") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: void do_write(Output_data_got<64,_true> * this, Output_file * of) */

void __thiscall
gold::var_5<64,var_6>::do_write(var_5<64,var_6> *this,type_3 *of)

{
  byte var_1;
  long var_3;
  long var_4;
  type_1 *var_9;
  type_2 var_14;
  type_3 *in_RCX;
  type_2 var_12;
  size_t in_RDX;
  type_4 var_13;
  type_1 *var_10;
  type_1 *puVar7;
  
  var_1 = (this->super_Output_data_got_base).super_Output_section_data_build.
          super_Output_section_data.super_Output_data.field_0x20;
  if ((var_1 & 4) != 0) {
    var_3 = (this->super_Output_data_got_base).super_Output_section_data_build.
            super_Output_section_data.super_Output_data.offset_;
    if ((var_1 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/output.h",0xcf,"data_size");
    }
    var_4 = (this->super_Output_data_got_base).super_Output_section_data_build.
            super_Output_section_data.super_Output_data.data_size_;
    if ((-1 < var_3) && (var_4 + var_3 <= of->file_size_)) {
      var_9 = of->base_;
      var_12 = (this->entries_).
            super__Vector_base<gold::var_5<64,var_6>::var_7,_std::allocator<gold::var_5<64,var_6>::var_7>var_8>
            ._M_impl._M_start;
      if (var_12 == (this->entries_).
                 super__Vector_base<gold::var_5<64,var_6>::var_7,_std::allocator<gold::var_5<64,var_6>::var_7>var_8>
                 ._M_impl._M_finish) {
        if (var_4 != 0) goto LAB_001cfd8d;
      }
      else {
        var_13 = 0;
        var_10 = var_9 + var_3;
        do {
          puVar7 = var_10 + 8;
          Got_entry::var_11(var_12 + var_13,(int)var_13,var_10,(size_t)var_12);
          var_14 = (this->entries_).
                   super__Vector_base<gold::var_5<64,var_6>::var_7,_std::allocator<gold::var_5<64,var_6>::var_7>var_8>
                   ._M_impl._M_finish;
          var_12 = (this->entries_).
                super__Vector_base<gold::var_5<64,var_6>::var_7,_std::allocator<gold::var_5<64,var_6>::var_7>var_8>
                ._M_impl._M_start;
          var_13 = (type_4)((int)var_13 + 1);
          var_10 = puVar7;
        } while (var_13 < (type_4)(((long)var_14 - (long)var_12 >> 3) * -0x5555555555555555));
        if (var_4 != (long)puVar7 - (long)(var_9 + var_3)) {
LAB_001cfd8d:
                    /* WARNING: Subroutine does not return */
          var_2("../../gold/output.cc",0x6d9,"do_write");
        }
        if (var_12 != var_14) {
          (this->entries_).
          super__Vector_base<gold::var_5<64,var_6>::var_7,_std::allocator<gold::var_5<64,var_6>::var_7>var_8>
          ._M_impl._M_finish = var_12;
        }
      }
      return;
    }
    Output_file::var_15((type_3 *)this,(type_5)of,in_RDX,in_RCX);
  }
                    /* WARNING: Subroutine does not return */
  var_2("../../gold/output.h",0xe3,"offset");
}


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

void MASKED(long param_1,long param_2)

{
  long lVar1;
  long lVar2;
  ulong uVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  
  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {
    lVar4 = *(long *)(param_1 + 0x18);
    if ((*(byte *)(param_1 + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");
    }
    lVar1 = *(long *)(param_1 + 0x10);
    if ((-1 < lVar4) && (lVar1 + lVar4 <= *(long *)(param_2 + 0x10))) {
      lVar4 = lVar4 + *(long *)(param_2 + 0x18);
      lVar2 = *(long *)(param_1 + 0x38);
      if (lVar2 == *(long *)(param_1 + 0x40)) {
        if (lVar1 != 0) goto LAB_001cfd8d;
      }
      else {
        uVar3 = 0;
        lVar5 = lVar4;
        do {
          lVar6 = lVar5 + 8;
          FUN_001cfac0(lVar2 + uVar3 * 0x18,uVar3,lVar5);
          lVar2 = *(long *)(param_1 + 0x38);
          uVar3 = (ulong)((int)uVar3 + 1);
          lVar5 = lVar6;
        } while (uVar3 < (ulong)((*(long *)(param_1 + 0x40) - lVar2 >> 3) * -0x5555555555555555));
        if (lVar1 != lVar6 - lVar4) {
LAB_001cfd8d:
                    /* WARNING: Subroutine does not return */
          FUN_0016cdf0("../../gold/output.cc",0x6d9,"do_write");
        }
        if (lVar2 != *(long *)(param_1 + 0x40)) {
          *(long *)(param_1 + 0x40) = lVar2;
        }
      }
      return;
    }
    FUN_001bf770();
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/output.h",0xe3,"offset");
}

