
/* DWARF original name: _M_realloc_insert<const gold::Layout::Relaxation_debug_check::Section_info&>
   DWARF original prototype: void
   _M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>(vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
   * this, iterator __position, Section_info * __args#0) */

void __thiscall
std::
vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
::_M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>
          (vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
           *this,iterator __position,Section_info *__args_0)

{
  void *__dest;
  off_t *poVar1;
  Section_info *pSVar2;
  Section_info *__src;
  uint64_t uVar3;
  off_t oVar4;
  off_t oVar5;
  ulong uVar6;
  pointer __dest_00;
  size_t __n;
  ulong uVar7;
  ulong uVar8;
  pointer pSVar9;
  
  pSVar2 = (this->
           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
           )._M_impl._M_finish;
  __src = (this->
          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
          )._M_impl._M_start;
  __n = (long)__position._M_current - (long)__src;
  uVar6 = (long)pSVar2 - (long)__src >> 5;
  if (uVar6 == 0) {
    uVar7 = 1;
LAB_001c6af5:
    uVar8 = uVar7 << 5;
LAB_001c69f8:
    __dest_00 = (pointer)operator_new(uVar8);
    pSVar9 = (pointer)((long)&__dest_00->output_section + uVar8);
  }
  else {
    uVar7 = uVar6 * 2;
    uVar8 = 0xffffffffffffffe0;
    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;
    pSVar9 = (pointer)0x0;
    __dest_00 = (pointer)0x0;
    if (uVar7 != 0) goto LAB_001c6af5;
  }
  uVar3 = __args_0->address;
  oVar4 = __args_0->data_size;
  oVar5 = __args_0->offset;
  __dest = (void *)((long)__dest_00 + __n + 0x20);
  *(undefined8 *)((long)__dest_00 + __n) = __args_0->output_section;
  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;
  poVar1 = (off_t *)((long)__dest_00 + __n + 0x10);
  *poVar1 = oVar4;
  poVar1[1] = oVar5;
  if (__position._M_current == __src) {
    if (__position._M_current != pSVar2) goto LAB_001c6a77;
LAB_001c6a85:
    if (__src == (Section_info *)0x0) goto LAB_001c6a8a;
  }
  else {
    memmove(__dest_00,__src,__n);
    if (__position._M_current != pSVar2) {
LAB_001c6a77:
      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);
      goto LAB_001c6a85;
    }
  }
  operator_delete(__src);
LAB_001c6a8a:
  (this->
  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
  )._M_impl._M_start = __dest_00;
  (this->
  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
  )._M_impl._M_finish = (pointer)((long)__dest + ((long)pSVar2 - (long)__position._M_current));
  (this->
  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
  )._M_impl._M_end_of_storage = pSVar9;
  return;
}



void FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)

{
  void *__dest;
  undefined8 *puVar1;
  void *pvVar2;
  void *__src;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  void *__dest_00;
  size_t __n;
  ulong uVar7;
  long lVar8;
  
  pvVar2 = (void *)param_1[1];
  __src = (void *)*param_1;
  __n = (long)param_2 - (long)__src;
  uVar6 = (long)pvVar2 - (long)__src >> 5;
  if (uVar6 == 0) {
    uVar7 = 1;
LAB_001c6af5:
    lVar8 = uVar7 << 5;
LAB_001c69f8:
    __dest_00 = (void *)FUN_002f0690(lVar8);
    lVar8 = lVar8 + (long)__dest_00;
  }
  else {
    uVar7 = uVar6 * 2;
    lVar8 = -0x20;
    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;
    lVar8 = 0;
    __dest_00 = (void *)0x0;
    if (uVar7 != 0) goto LAB_001c6af5;
  }
  uVar3 = param_3[1];
  uVar4 = param_3[2];
  uVar5 = param_3[3];
  __dest = (void *)((long)__dest_00 + __n + 0x20);
  *(undefined8 *)((long)__dest_00 + __n) = *param_3;
  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;
  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);
  *puVar1 = uVar4;
  puVar1[1] = uVar5;
  if (param_2 == __src) {
    if (param_2 != pvVar2) goto LAB_001c6a77;
LAB_001c6a85:
    if (__src == (void *)0x0) goto LAB_001c6a8a;
  }
  else {
    memmove(__dest_00,__src,__n);
    if (param_2 != pvVar2) {
LAB_001c6a77:
      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);
      goto LAB_001c6a85;
    }
  }
  FUN_002f1e60(__src);
LAB_001c6a8a:
  *param_1 = __dest_00;
  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);
  param_1[2] = lVar8;
  return;
}


PUSH R15
MOV RCX,RSI
MOV R15,RDX
PUSH R14
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x28
MOV R8,qword ptr [RDI + 0x8]
MOV R12,qword ptr [RDI]
MOV RAX,R8
SUB RCX,R12
SUB RAX,R12
SAR RAX,0x5
JZ 0x001c6af0
LEA RDX,[RAX + RAX*0x1]
MOV R14,-0x20
CMP RAX,RDX
JBE 0x001c6ab8
MOV RDI,R14
MOV qword ptr [RSP + 0x10],RCX
MOV qword ptr [RSP + 0x8],R8
CALL 0x002f0690
MOV RCX,qword ptr [RSP + 0x10]
MOV R8,qword ptr [RSP + 0x8]
MOV RBX,RAX
ADD R14,RAX
MOVDQU XMM0,xmmword ptr [R15]
MOVDQU XMM1,xmmword ptr [R15 + 0x10]
MOV R9,R8
LEA R10,[RBX + RCX*0x1 + 0x20]
SUB R9,R13
MOVUPS xmmword ptr [RBX + RCX*0x1],XMM0
LEA R15,[R10 + R9*0x1]
MOVUPS xmmword ptr [RBX + RCX*0x1 + 0x10],XMM1
CMP R13,R12
JZ 0x001c6ae0
MOV RDX,RCX
MOV RSI,R12
MOV RDI,RBX
MOV qword ptr [RSP + 0x18],R10
MOV qword ptr [RSP + 0x10],R9
MOV qword ptr [RSP + 0x8],R8
CALL 0x001496d0
MOV R8,qword ptr [RSP + 0x8]
MOV R9,qword ptr [RSP + 0x10]
MOV R10,qword ptr [RSP + 0x18]
CMP R13,R8
JZ 0x001c6aa8
MOV RDX,R9
MOV RSI,R13
MOV RDI,R10
CALL 0x00149a90
TEST R12,R12
JNZ 0x001c6aa8
MOV qword ptr [RBP],RBX
MOV qword ptr [RBP + 0x8],R15
MOV qword ptr [RBP + 0x10],R14
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,R12
CALL 0x002f1e60
JMP 0x001c6a8a
MOV RAX,0x7ffffffffffffff
CMP RDX,RAX
JA 0x001c69f8
XOR R14D,R14D
XOR EBX,EBX
TEST RDX,RDX
JZ 0x001c6a1a
JMP 0x001c6af5
CMP R13,R8
JNZ 0x001c6a77
JMP 0x001c6a85
MOV EDX,0x1
SHL RDX,0x5
MOV R14,RDX
JMP 0x001c69f8
(translation_unit "void FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)\n\n{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}\n\n" (function_definition "void FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)\n\n{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" primitive_type (function_declarator "FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)" identifier (parameter_list "(undefined8 *param_1,void *param_2,undefined8 *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" { (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "void *__dest_00;" primitive_type (pointer_declarator "*__dest_00" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (expression_statement "pvVar2 = (void *)param_1[1];" (assignment_expression "pvVar2 = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "__src = (void *)*param_1;" (assignment_expression "__src = (void *)*param_1" identifier = (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "__n = (long)param_2 - (long)__src;" (assignment_expression "__n = (long)param_2 - (long)__src" identifier = (binary_expression "(long)param_2 - (long)__src" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar6 = (long)pvVar2 - (long)__src >> 5;" (assignment_expression "uVar6 = (long)pvVar2 - (long)__src >> 5" identifier = (binary_expression "(long)pvVar2 - (long)__src >> 5" (binary_expression "(long)pvVar2 - (long)__src" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001c6af5:\n    lVar8 = uVar7 << 5;" statement_identifier : (expression_statement "lVar8 = uVar7 << 5;" (assignment_expression "lVar8 = uVar7 << 5" identifier = (binary_expression "uVar7 << 5" identifier << number_literal)) ;)) (labeled_statement "LAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);" statement_identifier : (expression_statement "__dest_00 = (void *)FUN_002f0690(lVar8);" (assignment_expression "__dest_00 = (void *)FUN_002f0690(lVar8)" identifier = (cast_expression "(void *)FUN_002f0690(lVar8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002f0690(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))))) ;)) (expression_statement "lVar8 = lVar8 + (long)__dest_00;" (assignment_expression "lVar8 = lVar8 + (long)__dest_00" identifier = (binary_expression "lVar8 + (long)__dest_00" identifier + (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }) (else_clause "else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" else (compound_statement "{\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" { (expression_statement "uVar7 = uVar6 * 2;" (assignment_expression "uVar7 = uVar6 * 2" identifier = (binary_expression "uVar6 * 2" identifier * number_literal)) ;) (expression_statement "lVar8 = -0x20;" (assignment_expression "lVar8 = -0x20" identifier = number_literal) ;) (if_statement "if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;" if (parenthesized_expression "((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7))" ( (binary_expression "(uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)" (parenthesized_expression "(uVar7 < uVar6)" ( (binary_expression "uVar7 < uVar6" identifier < identifier) )) || (parenthesized_expression "(0x7ffffffffffffff < uVar7)" ( (binary_expression "0x7ffffffffffffff < uVar7" number_literal < identifier) ))) )) (goto_statement "goto LAB_001c69f8;" goto statement_identifier ;)) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "__dest_00 = (void *)0x0;" (assignment_expression "__dest_00 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (uVar7 != 0) goto LAB_001c6af5;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c6af5;" goto statement_identifier ;)) }))) (expression_statement "uVar3 = param_3[1];" (assignment_expression "uVar3 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_3[2];" (assignment_expression "uVar4 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_3[3];" (assignment_expression "uVar5 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "__dest = (void *)((long)__dest_00 + __n + 0x20);" (assignment_expression "__dest = (void *)((long)__dest_00 + __n + 0x20)" identifier = (cast_expression "(void *)((long)__dest_00 + __n + 0x20)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n + 0x20)" ( (binary_expression "(long)__dest_00 + __n + 0x20" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "*(undefined8 *)((long)__dest_00 + __n) = *param_3;" (assignment_expression "*(undefined8 *)((long)__dest_00 + __n) = *param_3" (pointer_expression "*(undefined8 *)((long)__dest_00 + __n)" * (cast_expression "(undefined8 *)((long)__dest_00 + __n)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n)" ( (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;" (assignment_expression "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3" (subscript_expression "((undefined8 *)((long)__dest_00 + __n))[1]" (parenthesized_expression "((undefined8 *)((long)__dest_00 + __n))" ( (cast_expression "(undefined8 *)((long)__dest_00 + __n)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n)" ( (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) )) [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);" (assignment_expression "puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10)" identifier = (cast_expression "(undefined8 *)((long)__dest_00 + __n + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n + 0x10)" ( (binary_expression "(long)__dest_00 + __n + 0x10" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "*puVar1 = uVar4;" (assignment_expression "*puVar1 = uVar4" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = uVar5;" (assignment_expression "puVar1[1] = uVar5" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" if (parenthesized_expression "(param_2 == __src)" ( (binary_expression "param_2 == __src" identifier == identifier) )) (compound_statement "{\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }" { (if_statement "if (param_2 != pvVar2) goto LAB_001c6a77;" if (parenthesized_expression "(param_2 != pvVar2)" ( (binary_expression "param_2 != pvVar2" identifier != identifier) )) (goto_statement "goto LAB_001c6a77;" goto statement_identifier ;)) (labeled_statement "LAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;" statement_identifier : (if_statement "if (__src == (void *)0x0) goto LAB_001c6a8a;" if (parenthesized_expression "(__src == (void *)0x0)" ( (binary_expression "__src == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001c6a8a;" goto statement_identifier ;))) }) (else_clause "else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" else (compound_statement "{\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" { (expression_statement "memmove(__dest_00,__src,__n);" (call_expression "memmove(__dest_00,__src,__n)" identifier (argument_list "(__dest_00,__src,__n)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }" if (parenthesized_expression "(param_2 != pvVar2)" ( (binary_expression "param_2 != pvVar2" identifier != identifier) )) (compound_statement "{\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }" { (labeled_statement "LAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);" statement_identifier : (expression_statement "memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);" (call_expression "memcpy(__dest,param_2,(long)pvVar2 - (long)param_2)" identifier (argument_list "(__dest,param_2,(long)pvVar2 - (long)param_2)" ( identifier , identifier , (binary_expression "(long)pvVar2 - (long)param_2" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;)) (goto_statement "goto LAB_001c6a85;" goto statement_identifier ;) })) }))) (expression_statement "FUN_002f1e60(__src);" (call_expression "FUN_002f1e60(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (labeled_statement "LAB_001c6a8a:\n  *param_1 = __dest_00;" statement_identifier : (expression_statement "*param_1 = __dest_00;" (assignment_expression "*param_1 = __dest_00" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);" (assignment_expression "param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest + ((long)pvVar2 - (long)param_2)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)pvVar2 - (long)param_2)" ( (binary_expression "(long)pvVar2 - (long)param_2" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "param_1[2] = lVar8;" (assignment_expression "param_1[2] = lVar8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original name: _M_realloc_insert<const gold::Layout::Relaxation_debug_check::Section_info&>\n   DWARF original prototype: void\n   _M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>(vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n   * this, iterator __position, Section_info * __args#0) */\n\nvoid __thiscall\nstd::\nvector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n::_M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>\n          (vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           *this,iterator __position,Section_info *__args_0)\n\n{\n  void *__dest;\n  off_t *poVar1;\n  Section_info *pSVar2;\n  Section_info *__src;\n  uint64_t uVar3;\n  off_t oVar4;\n  off_t oVar5;\n  ulong uVar6;\n  pointer __dest_00;\n  size_t __n;\n  ulong uVar7;\n  ulong uVar8;\n  pointer pSVar9;\n  \n  pSVar2 = (this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           )._M_impl._M_finish;\n  __src = (this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n          )._M_impl._M_start;\n  __n = (long)__position._M_current - (long)__src;\n  uVar6 = (long)pSVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    uVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (pointer)operator_new(uVar8);\n    pSVar9 = (pointer)((long)&__dest_00->output_section + uVar8);\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    uVar8 = 0xffffffffffffffe0;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    pSVar9 = (pointer)0x0;\n    __dest_00 = (pointer)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = __args_0->address;\n  oVar4 = __args_0->data_size;\n  oVar5 = __args_0->offset;\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = __args_0->output_section;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  poVar1 = (off_t *)((long)__dest_00 + __n + 0x10);\n  *poVar1 = oVar4;\n  poVar1[1] = oVar5;\n  if (__position._M_current == __src) {\n    if (__position._M_current != pSVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (Section_info *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (__position._M_current != pSVar2) {\nLAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);\n      goto LAB_001c6a85;\n    }\n  }\n  operator_delete(__src);\nLAB_001c6a8a:\n  (this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_start = __dest_00;\n  (this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_finish = (pointer)((long)__dest + ((long)pSVar2 - (long)__position._M_current));\n  (this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_end_of_storage = pSVar9;\n  return;\n}\n\n" comment (declaration "void __thiscall\nstd::\nvector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n::_M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>\n          (vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           *this,iterator __position,Section_info *__args_0)\n\n{\n  void *__dest;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\nvector<gold::Layout::Relaxation_debug_check::" identifier : : identifier < identifier : : identifier : : identifier : :) identifier , (ERROR "_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n::_M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>\n          (vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           *this,iterator __position,Section_info *__args_0)\n\n{\n  void" identifier : : identifier < identifier : : identifier : : identifier : : identifier > identifier > : : identifier < identifier : : identifier : : identifier : : (function_declarator "Section_info&>\n          (vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           *this,iterator __position,Section_info *__args_0)" identifier (ERROR "&>" & >) (parameter_list "(vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           *this,iterator __position,Section_info *__args_0)" ( (parameter_declaration "vector<gold::Layout::Relaxation_debug_check::Section_info" type_identifier (ERROR "<gold::Layout::Relaxation_debug_check::" < identifier : : identifier : : identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           *this" type_identifier (ERROR "::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>" : : identifier < identifier : : identifier : : identifier : : identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "iterator __position" type_identifier identifier) , (parameter_declaration "Section_info *__args_0" type_identifier (pointer_declarator "*__args_0" * identifier)) ))) { primitive_type) (pointer_declarator "*__dest" * identifier) ;) (declaration "off_t *poVar1;" type_identifier (pointer_declarator "*poVar1" * identifier) ;) (declaration "Section_info *pSVar2;" type_identifier (pointer_declarator "*pSVar2" * identifier) ;) (declaration "Section_info *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "uint64_t uVar3;" primitive_type identifier ;) (declaration "off_t oVar4;" type_identifier identifier ;) (declaration "off_t oVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "pointer __dest_00;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "pointer pSVar9;" type_identifier identifier ;) (expression_statement "pSVar2 = (this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           )._M_impl._M_finish;" (assignment_expression "pSVar2 = (this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           )._M_impl._M_finish" identifier = (field_expression "(this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           )._M_impl._M_finish" (field_expression "(this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           )._M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n           )" ( (ERROR "this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::" (comma_expression "this->\n           super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Layout::Relaxation_debug_check::Section_info" : : identifier : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : : identifier : :) (binary_expression "Section_info>_>" (binary_expression "Section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "__src = (this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n          )._M_impl._M_start;" (assignment_expression "__src = (this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n          )._M_impl._M_start" identifier = (field_expression "(this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n          )._M_impl._M_start" (field_expression "(this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n          )._M_impl" (parenthesized_expression "(this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n          )" ( (ERROR "this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::" (comma_expression "this->\n          super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std" (binary_expression "this->\n          super__Vector_base<gold" (field_expression "this->\n          super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Layout::Relaxation_debug_check::Section_info" : : identifier : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : : identifier : :) (binary_expression "Section_info>_>" (binary_expression "Section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "__n = (long)__position._M_current - (long)__src;" (assignment_expression "__n = (long)__position._M_current - (long)__src" identifier = (binary_expression "(long)__position._M_current - (long)__src" (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier)) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar6 = (long)pSVar2 - (long)__src >> 5;" (assignment_expression "uVar6 = (long)pSVar2 - (long)__src >> 5" identifier = (binary_expression "(long)pSVar2 - (long)__src >> 5" (binary_expression "(long)pSVar2 - (long)__src" (cast_expression "(long)pSVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    uVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (pointer)operator_new(uVar8);\n    pSVar9 = (pointer)((long)&__dest_00->output_section + uVar8);\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    uVar8 = 0xffffffffffffffe0;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    pSVar9 = (pointer)0x0;\n    __dest_00 = (pointer)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = 1;\nLAB_001c6af5:\n    uVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (pointer)operator_new(uVar8);\n    pSVar9 = (pointer)((long)&__dest_00->output_section + uVar8);\n  }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001c6af5:\n    uVar8 = uVar7 << 5;" statement_identifier : (expression_statement "uVar8 = uVar7 << 5;" (assignment_expression "uVar8 = uVar7 << 5" identifier = (binary_expression "uVar7 << 5" identifier << number_literal)) ;)) (labeled_statement "LAB_001c69f8:\n    __dest_00 = (pointer)operator_new(uVar8);" statement_identifier : (expression_statement "__dest_00 = (pointer)operator_new(uVar8);" (assignment_expression "__dest_00 = (pointer)operator_new(uVar8)" identifier = (cast_expression "(pointer)operator_new(uVar8)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))))) ;)) (expression_statement "pSVar9 = (pointer)((long)&__dest_00->output_section + uVar8);" (assignment_expression "pSVar9 = (pointer)((long)&__dest_00->output_section + uVar8)" identifier = (call_expression "(pointer)((long)&__dest_00->output_section + uVar8)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&__dest_00->output_section + uVar8)" ( (binary_expression "(long)&__dest_00->output_section + uVar8" (cast_expression "(long)&__dest_00->output_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&__dest_00->output_section" & (field_expression "__dest_00->output_section" identifier -> field_identifier))) + identifier) )))) ;) }) (else_clause "else {\n    uVar7 = uVar6 * 2;\n    uVar8 = 0xffffffffffffffe0;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    pSVar9 = (pointer)0x0;\n    __dest_00 = (pointer)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" else (compound_statement "{\n    uVar7 = uVar6 * 2;\n    uVar8 = 0xffffffffffffffe0;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    pSVar9 = (pointer)0x0;\n    __dest_00 = (pointer)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" { (expression_statement "uVar7 = uVar6 * 2;" (assignment_expression "uVar7 = uVar6 * 2" identifier = (binary_expression "uVar6 * 2" identifier * number_literal)) ;) (expression_statement "uVar8 = 0xffffffffffffffe0;" (assignment_expression "uVar8 = 0xffffffffffffffe0" identifier = number_literal) ;) (if_statement "if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;" if (parenthesized_expression "((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7))" ( (binary_expression "(uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)" (parenthesized_expression "(uVar7 < uVar6)" ( (binary_expression "uVar7 < uVar6" identifier < identifier) )) || (parenthesized_expression "(0x7ffffffffffffff < uVar7)" ( (binary_expression "0x7ffffffffffffff < uVar7" number_literal < identifier) ))) )) (goto_statement "goto LAB_001c69f8;" goto statement_identifier ;)) (expression_statement "pSVar9 = (pointer)0x0;" (assignment_expression "pSVar9 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "__dest_00 = (pointer)0x0;" (assignment_expression "__dest_00 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (if_statement "if (uVar7 != 0) goto LAB_001c6af5;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c6af5;" goto statement_identifier ;)) }))) (expression_statement "uVar3 = __args_0->address;" (assignment_expression "uVar3 = __args_0->address" identifier = (field_expression "__args_0->address" identifier -> field_identifier)) ;) (expression_statement "oVar4 = __args_0->data_size;" (assignment_expression "oVar4 = __args_0->data_size" identifier = (field_expression "__args_0->data_size" identifier -> field_identifier)) ;) (expression_statement "oVar5 = __args_0->offset;" (assignment_expression "oVar5 = __args_0->offset" identifier = (field_expression "__args_0->offset" identifier -> field_identifier)) ;) (expression_statement "__dest = (void *)((long)__dest_00 + __n + 0x20);" (assignment_expression "__dest = (void *)((long)__dest_00 + __n + 0x20)" identifier = (cast_expression "(void *)((long)__dest_00 + __n + 0x20)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n + 0x20)" ( (binary_expression "(long)__dest_00 + __n + 0x20" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "*(undefined8 *)((long)__dest_00 + __n) = __args_0->output_section;" (assignment_expression "*(undefined8 *)((long)__dest_00 + __n) = __args_0->output_section" (pointer_expression "*(undefined8 *)((long)__dest_00 + __n)" * (cast_expression "(undefined8 *)((long)__dest_00 + __n)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n)" ( (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = (field_expression "__args_0->output_section" identifier -> field_identifier)) ;) (expression_statement "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;" (assignment_expression "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3" (subscript_expression "((undefined8 *)((long)__dest_00 + __n))[1]" (parenthesized_expression "((undefined8 *)((long)__dest_00 + __n))" ( (cast_expression "(undefined8 *)((long)__dest_00 + __n)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n)" ( (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) )) [ number_literal ]) = identifier) ;) (expression_statement "poVar1 = (off_t *)((long)__dest_00 + __n + 0x10);" (assignment_expression "poVar1 = (off_t *)((long)__dest_00 + __n + 0x10)" identifier = (cast_expression "(off_t *)((long)__dest_00 + __n + 0x10)" ( (type_descriptor "off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n + 0x10)" ( (binary_expression "(long)__dest_00 + __n + 0x10" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "*poVar1 = oVar4;" (assignment_expression "*poVar1 = oVar4" (pointer_expression "*poVar1" * identifier) = identifier) ;) (expression_statement "poVar1[1] = oVar5;" (assignment_expression "poVar1[1] = oVar5" (subscript_expression "poVar1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (__position._M_current == __src) {\n    if (__position._M_current != pSVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (Section_info *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (__position._M_current != pSVar2) {\nLAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);\n      goto LAB_001c6a85;\n    }\n  }" if (parenthesized_expression "(__position._M_current == __src)" ( (binary_expression "__position._M_current == __src" (field_expression "__position._M_current" identifier . field_identifier) == identifier) )) (compound_statement "{\n    if (__position._M_current != pSVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (Section_info *)0x0) goto LAB_001c6a8a;\n  }" { (if_statement "if (__position._M_current != pSVar2) goto LAB_001c6a77;" if (parenthesized_expression "(__position._M_current != pSVar2)" ( (binary_expression "__position._M_current != pSVar2" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (goto_statement "goto LAB_001c6a77;" goto statement_identifier ;)) (labeled_statement "LAB_001c6a85:\n    if (__src == (Section_info *)0x0) goto LAB_001c6a8a;" statement_identifier : (if_statement "if (__src == (Section_info *)0x0) goto LAB_001c6a8a;" if (parenthesized_expression "(__src == (Section_info *)0x0)" ( (binary_expression "__src == (Section_info *)0x0" identifier == (cast_expression "(Section_info *)0x0" ( (type_descriptor "Section_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001c6a8a;" goto statement_identifier ;))) }) (else_clause "else {\n    memmove(__dest_00,__src,__n);\n    if (__position._M_current != pSVar2) {\nLAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);\n      goto LAB_001c6a85;\n    }\n  }" else (compound_statement "{\n    memmove(__dest_00,__src,__n);\n    if (__position._M_current != pSVar2) {\nLAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);\n      goto LAB_001c6a85;\n    }\n  }" { (expression_statement "memmove(__dest_00,__src,__n);" (call_expression "memmove(__dest_00,__src,__n)" identifier (argument_list "(__dest_00,__src,__n)" ( identifier , identifier , identifier ))) ;) (if_statement "if (__position._M_current != pSVar2) {\nLAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);\n      goto LAB_001c6a85;\n    }" if (parenthesized_expression "(__position._M_current != pSVar2)" ( (binary_expression "__position._M_current != pSVar2" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\nLAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);\n      goto LAB_001c6a85;\n    }" { (labeled_statement "LAB_001c6a77:\n      memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);" statement_identifier : (expression_statement "memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current);" (call_expression "memcpy(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current)" identifier (argument_list "(__dest,__position._M_current,(long)pSVar2 - (long)__position._M_current)" ( identifier , (field_expression "__position._M_current" identifier . field_identifier) , (binary_expression "(long)pSVar2 - (long)__position._M_current" (cast_expression "(long)pSVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier))) ))) ;)) (goto_statement "goto LAB_001c6a85;" goto statement_identifier ;) })) }))) (expression_statement "operator_delete(__src);" (call_expression "operator_delete(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (labeled_statement "LAB_001c6a8a:\n  (this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_start = __dest_00;" statement_identifier : (expression_statement "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_start = __dest_00;" (assignment_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_start = __dest_00" (field_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_start" (field_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )" ( (ERROR "this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::" (comma_expression "this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std" (binary_expression "this->\n  super__Vector_base<gold" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Layout::Relaxation_debug_check::Section_info" : : identifier : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : : identifier : :) (binary_expression "Section_info>_>" (binary_expression "Section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;)) (expression_statement "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_finish = (pointer)((long)__dest + ((long)pSVar2 - (long)__position._M_current));" (assignment_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_finish = (pointer)((long)__dest + ((long)pSVar2 - (long)__position._M_current))" (field_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_finish" (field_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )" ( (ERROR "this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::" (comma_expression "this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std" (binary_expression "this->\n  super__Vector_base<gold" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Layout::Relaxation_debug_check::Section_info" : : identifier : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : : identifier : :) (binary_expression "Section_info>_>" (binary_expression "Section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = (call_expression "(pointer)((long)__dest + ((long)pSVar2 - (long)__position._M_current))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)__dest + ((long)pSVar2 - (long)__position._M_current))" ( (binary_expression "(long)__dest + ((long)pSVar2 - (long)__position._M_current)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)pSVar2 - (long)__position._M_current)" ( (binary_expression "(long)pSVar2 - (long)__position._M_current" (cast_expression "(long)pSVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__position._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__position._M_current" identifier . field_identifier))) ))) )))) ;) (expression_statement "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_end_of_storage = pSVar9;" (assignment_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_end_of_storage = pSVar9" (field_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl._M_end_of_storage" (field_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>\n  )" ( (ERROR "this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::" (comma_expression "this->\n  super__Vector_base<gold::Layout::Relaxation_debug_check::Section_info,_std" (binary_expression "this->\n  super__Vector_base<gold" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Layout::Relaxation_debug_check::Section_info" : : identifier : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : : identifier : :) (binary_expression "Section_info>_>" (binary_expression "Section_info>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)\n\n{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}\n\n" (function_definition "void FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)\n\n{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" primitive_type (function_declarator "FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)" identifier (parameter_list "(undefined8 *param_1,void *param_2,undefined8 *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" { (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "void *__dest_00;" primitive_type (pointer_declarator "*__dest_00" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (expression_statement "pvVar2 = (void *)param_1[1];" (assignment_expression "pvVar2 = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "__src = (void *)*param_1;" (assignment_expression "__src = (void *)*param_1" identifier = (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "__n = (long)param_2 - (long)__src;" (assignment_expression "__n = (long)param_2 - (long)__src" identifier = (binary_expression "(long)param_2 - (long)__src" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar6 = (long)pvVar2 - (long)__src >> 5;" (assignment_expression "uVar6 = (long)pvVar2 - (long)__src >> 5" identifier = (binary_expression "(long)pvVar2 - (long)__src >> 5" (binary_expression "(long)pvVar2 - (long)__src" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001c6af5:\n    lVar8 = uVar7 << 5;" statement_identifier : (expression_statement "lVar8 = uVar7 << 5;" (assignment_expression "lVar8 = uVar7 << 5" identifier = (binary_expression "uVar7 << 5" identifier << number_literal)) ;)) (labeled_statement "LAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);" statement_identifier : (expression_statement "__dest_00 = (void *)FUN_002f0690(lVar8);" (assignment_expression "__dest_00 = (void *)FUN_002f0690(lVar8)" identifier = (cast_expression "(void *)FUN_002f0690(lVar8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002f0690(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))))) ;)) (expression_statement "lVar8 = lVar8 + (long)__dest_00;" (assignment_expression "lVar8 = lVar8 + (long)__dest_00" identifier = (binary_expression "lVar8 + (long)__dest_00" identifier + (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }) (else_clause "else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" else (compound_statement "{\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" { (expression_statement "uVar7 = uVar6 * 2;" (assignment_expression "uVar7 = uVar6 * 2" identifier = (binary_expression "uVar6 * 2" identifier * number_literal)) ;) (expression_statement "lVar8 = -0x20;" (assignment_expression "lVar8 = -0x20" identifier = number_literal) ;) (if_statement "if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;" if (parenthesized_expression "((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7))" ( (binary_expression "(uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)" (parenthesized_expression "(uVar7 < uVar6)" ( (binary_expression "uVar7 < uVar6" identifier < identifier) )) || (parenthesized_expression "(0x7ffffffffffffff < uVar7)" ( (binary_expression "0x7ffffffffffffff < uVar7" number_literal < identifier) ))) )) (goto_statement "goto LAB_001c69f8;" goto statement_identifier ;)) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "__dest_00 = (void *)0x0;" (assignment_expression "__dest_00 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (uVar7 != 0) goto LAB_001c6af5;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c6af5;" goto statement_identifier ;)) }))) (expression_statement "uVar3 = param_3[1];" (assignment_expression "uVar3 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_3[2];" (assignment_expression "uVar4 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_3[3];" (assignment_expression "uVar5 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "__dest = (void *)((long)__dest_00 + __n + 0x20);" (assignment_expression "__dest = (void *)((long)__dest_00 + __n + 0x20)" identifier = (cast_expression "(void *)((long)__dest_00 + __n + 0x20)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n + 0x20)" ( (binary_expression "(long)__dest_00 + __n + 0x20" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "*(undefined8 *)((long)__dest_00 + __n) = *param_3;" (assignment_expression "*(undefined8 *)((long)__dest_00 + __n) = *param_3" (pointer_expression "*(undefined8 *)((long)__dest_00 + __n)" * (cast_expression "(undefined8 *)((long)__dest_00 + __n)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n)" ( (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;" (assignment_expression "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3" (subscript_expression "((undefined8 *)((long)__dest_00 + __n))[1]" (parenthesized_expression "((undefined8 *)((long)__dest_00 + __n))" ( (cast_expression "(undefined8 *)((long)__dest_00 + __n)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n)" ( (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) )) [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);" (assignment_expression "puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10)" identifier = (cast_expression "(undefined8 *)((long)__dest_00 + __n + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest_00 + __n + 0x10)" ( (binary_expression "(long)__dest_00 + __n + 0x10" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "*puVar1 = uVar4;" (assignment_expression "*puVar1 = uVar4" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = uVar5;" (assignment_expression "puVar1[1] = uVar5" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" if (parenthesized_expression "(param_2 == __src)" ( (binary_expression "param_2 == __src" identifier == identifier) )) (compound_statement "{\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }" { (if_statement "if (param_2 != pvVar2) goto LAB_001c6a77;" if (parenthesized_expression "(param_2 != pvVar2)" ( (binary_expression "param_2 != pvVar2" identifier != identifier) )) (goto_statement "goto LAB_001c6a77;" goto statement_identifier ;)) (labeled_statement "LAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;" statement_identifier : (if_statement "if (__src == (void *)0x0) goto LAB_001c6a8a;" if (parenthesized_expression "(__src == (void *)0x0)" ( (binary_expression "__src == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001c6a8a;" goto statement_identifier ;))) }) (else_clause "else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" else (compound_statement "{\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" { (expression_statement "memmove(__dest_00,__src,__n);" (call_expression "memmove(__dest_00,__src,__n)" identifier (argument_list "(__dest_00,__src,__n)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }" if (parenthesized_expression "(param_2 != pvVar2)" ( (binary_expression "param_2 != pvVar2" identifier != identifier) )) (compound_statement "{\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }" { (labeled_statement "LAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);" statement_identifier : (expression_statement "memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);" (call_expression "memcpy(__dest,param_2,(long)pvVar2 - (long)param_2)" identifier (argument_list "(__dest,param_2,(long)pvVar2 - (long)param_2)" ( identifier , identifier , (binary_expression "(long)pvVar2 - (long)param_2" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;)) (goto_statement "goto LAB_001c6a85;" goto statement_identifier ;) })) }))) (expression_statement "FUN_002f1e60(__src);" (call_expression "FUN_002f1e60(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (labeled_statement "LAB_001c6a8a:\n  *param_1 = __dest_00;" statement_identifier : (expression_statement "*param_1 = __dest_00;" (assignment_expression "*param_1 = __dest_00" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);" (assignment_expression "param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest + ((long)pvVar2 - (long)param_2)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)pvVar2 - (long)param_2)" ( (binary_expression "(long)pvVar2 - (long)param_2" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "param_1[2] = lVar8;" (assignment_expression "param_1[2] = lVar8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) )) [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ;)) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)\n\n{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001c69b0(undefined8 *param_1,void *param_2,undefined8 *param_3)" (identifier "FUN_001c69b0") (parameter_list "(undefined8 *param_1,void *param_2,undefined8 *param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "void *param_2" (primitive_type "void") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  void *__dest;\n  undefined8 *puVar1;\n  void *pvVar2;\n  void *__src;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  void *__dest_00;\n  size_t __n;\n  ulong uVar7;\n  long lVar8;\n  \n  pvVar2 = (void *)param_1[1];\n  __src = (void *)*param_1;\n  __n = (long)param_2 - (long)__src;\n  uVar6 = (long)pvVar2 - (long)__src >> 5;\n  if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }\n  uVar3 = param_3[1];\n  uVar4 = param_3[2];\n  uVar5 = param_3[3];\n  __dest = (void *)((long)__dest_00 + __n + 0x20);\n  *(undefined8 *)((long)__dest_00 + __n) = *param_3;\n  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;\n  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);\n  *puVar1 = uVar4;\n  puVar1[1] = uVar5;\n  if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }\n  FUN_002f1e60(__src);\nLAB_001c6a8a:\n  *param_1 = __dest_00;\n  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" ({ "{") (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "void *pvVar2;" (primitive_type "void") (pointer_declarator "*pvVar2" (* "*") (identifier "pvVar2")) (; ";")) (declaration "void *__src;" (primitive_type "void") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "void *__dest_00;" (primitive_type "void") (pointer_declarator "*__dest_00" (* "*") (identifier "__dest_00")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (expression_statement "pvVar2 = (void *)param_1[1];" (assignment_expression "pvVar2 = (void *)param_1[1]" (identifier "pvVar2") (= "=") (cast_expression "(void *)param_1[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "__src = (void *)*param_1;" (assignment_expression "__src = (void *)*param_1" (identifier "__src") (= "=") (cast_expression "(void *)*param_1" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "__n = (long)param_2 - (long)__src;" (assignment_expression "__n = (long)param_2 - (long)__src" (identifier "__n") (= "=") (binary_expression "(long)param_2 - (long)__src" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")))) (; ";")) (expression_statement "uVar6 = (long)pvVar2 - (long)__src >> 5;" (assignment_expression "uVar6 = (long)pvVar2 - (long)__src >> 5" (identifier "uVar6") (= "=") (binary_expression "(long)pvVar2 - (long)__src >> 5" (binary_expression "(long)pvVar2 - (long)__src" (cast_expression "(long)pvVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar2")) (- "-") (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src"))) (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (uVar6 == 0) {\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }\n  else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = 1;\nLAB_001c6af5:\n    lVar8 = uVar7 << 5;\nLAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);\n    lVar8 = lVar8 + (long)__dest_00;\n  }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001c6af5:\n    lVar8 = uVar7 << 5;" (statement_identifier "LAB_001c6af5") (: ":") (expression_statement "lVar8 = uVar7 << 5;" (assignment_expression "lVar8 = uVar7 << 5" (identifier "lVar8") (= "=") (binary_expression "uVar7 << 5" (identifier "uVar7") (<< "<<") (number_literal "5"))) (; ";"))) (labeled_statement "LAB_001c69f8:\n    __dest_00 = (void *)FUN_002f0690(lVar8);" (statement_identifier "LAB_001c69f8") (: ":") (expression_statement "__dest_00 = (void *)FUN_002f0690(lVar8);" (assignment_expression "__dest_00 = (void *)FUN_002f0690(lVar8)" (identifier "__dest_00") (= "=") (cast_expression "(void *)FUN_002f0690(lVar8)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002f0690(lVar8)" (identifier "FUN_002f0690") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))))) (; ";"))) (expression_statement "lVar8 = lVar8 + (long)__dest_00;" (assignment_expression "lVar8 = lVar8 + (long)__dest_00" (identifier "lVar8") (= "=") (binary_expression "lVar8 + (long)__dest_00" (identifier "lVar8") (+ "+") (cast_expression "(long)__dest_00" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest_00")))) (; ";")) (} "}")) (else_clause "else {\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" (else "else") (compound_statement "{\n    uVar7 = uVar6 * 2;\n    lVar8 = -0x20;\n    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;\n    lVar8 = 0;\n    __dest_00 = (void *)0x0;\n    if (uVar7 != 0) goto LAB_001c6af5;\n  }" ({ "{") (expression_statement "uVar7 = uVar6 * 2;" (assignment_expression "uVar7 = uVar6 * 2" (identifier "uVar7") (= "=") (binary_expression "uVar6 * 2" (identifier "uVar6") (* "*") (number_literal "2"))) (; ";")) (expression_statement "lVar8 = -0x20;" (assignment_expression "lVar8 = -0x20" (identifier "lVar8") (= "=") (number_literal "-0x20")) (; ";")) (if_statement "if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;" (if "if") (parenthesized_expression "((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7))" (( "(") (binary_expression "(uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)" (parenthesized_expression "(uVar7 < uVar6)" (( "(") (binary_expression "uVar7 < uVar6" (identifier "uVar7") (< "<") (identifier "uVar6")) () ")")) (|| "||") (parenthesized_expression "(0x7ffffffffffffff < uVar7)" (( "(") (binary_expression "0x7ffffffffffffff < uVar7" (number_literal "0x7ffffffffffffff") (< "<") (identifier "uVar7")) () ")"))) () ")")) (goto_statement "goto LAB_001c69f8;" (goto "goto") (statement_identifier "LAB_001c69f8") (; ";"))) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "__dest_00 = (void *)0x0;" (assignment_expression "__dest_00 = (void *)0x0" (identifier "__dest_00") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (uVar7 != 0) goto LAB_001c6af5;" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c6af5;" (goto "goto") (statement_identifier "LAB_001c6af5") (; ";"))) (} "}")))) (expression_statement "uVar3 = param_3[1];" (assignment_expression "uVar3 = param_3[1]" (identifier "uVar3") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = param_3[2];" (assignment_expression "uVar4 = param_3[2]" (identifier "uVar4") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar5 = param_3[3];" (assignment_expression "uVar5 = param_3[3]" (identifier "uVar5") (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "__dest = (void *)((long)__dest_00 + __n + 0x20);" (assignment_expression "__dest = (void *)((long)__dest_00 + __n + 0x20)" (identifier "__dest") (= "=") (cast_expression "(void *)((long)__dest_00 + __n + 0x20)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest_00 + __n + 0x20)" (( "(") (binary_expression "(long)__dest_00 + __n + 0x20" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest_00")) (+ "+") (identifier "__n")) (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)((long)__dest_00 + __n) = *param_3;" (assignment_expression "*(undefined8 *)((long)__dest_00 + __n) = *param_3" (pointer_expression "*(undefined8 *)((long)__dest_00 + __n)" (* "*") (cast_expression "(undefined8 *)((long)__dest_00 + __n)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest_00 + __n)" (( "(") (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest_00")) (+ "+") (identifier "__n")) () ")")))) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;" (assignment_expression "((undefined8 *)((long)__dest_00 + __n))[1] = uVar3" (subscript_expression "((undefined8 *)((long)__dest_00 + __n))[1]" (parenthesized_expression "((undefined8 *)((long)__dest_00 + __n))" (( "(") (cast_expression "(undefined8 *)((long)__dest_00 + __n)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest_00 + __n)" (( "(") (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest_00")) (+ "+") (identifier "__n")) () ")"))) () ")")) ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);" (assignment_expression "puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)((long)__dest_00 + __n + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest_00 + __n + 0x10)" (( "(") (binary_expression "(long)__dest_00 + __n + 0x10" (binary_expression "(long)__dest_00 + __n" (cast_expression "(long)__dest_00" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest_00")) (+ "+") (identifier "__n")) (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*puVar1 = uVar4;" (assignment_expression "*puVar1 = uVar4" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar1[1] = uVar5;" (assignment_expression "puVar1[1] = uVar5" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (param_2 == __src) {\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }\n  else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == __src)" (( "(") (binary_expression "param_2 == __src" (identifier "param_2") (== "==") (identifier "__src")) () ")")) (compound_statement "{\n    if (param_2 != pvVar2) goto LAB_001c6a77;\nLAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;\n  }" ({ "{") (if_statement "if (param_2 != pvVar2) goto LAB_001c6a77;" (if "if") (parenthesized_expression "(param_2 != pvVar2)" (( "(") (binary_expression "param_2 != pvVar2" (identifier "param_2") (!= "!=") (identifier "pvVar2")) () ")")) (goto_statement "goto LAB_001c6a77;" (goto "goto") (statement_identifier "LAB_001c6a77") (; ";"))) (labeled_statement "LAB_001c6a85:\n    if (__src == (void *)0x0) goto LAB_001c6a8a;" (statement_identifier "LAB_001c6a85") (: ":") (if_statement "if (__src == (void *)0x0) goto LAB_001c6a8a;" (if "if") (parenthesized_expression "(__src == (void *)0x0)" (( "(") (binary_expression "__src == (void *)0x0" (identifier "__src") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001c6a8a;" (goto "goto") (statement_identifier "LAB_001c6a8a") (; ";")))) (} "}")) (else_clause "else {\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" (else "else") (compound_statement "{\n    memmove(__dest_00,__src,__n);\n    if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }\n  }" ({ "{") (expression_statement "memmove(__dest_00,__src,__n);" (call_expression "memmove(__dest_00,__src,__n)" (identifier "memmove") (argument_list "(__dest_00,__src,__n)" (( "(") (identifier "__dest_00") (, ",") (identifier "__src") (, ",") (identifier "__n") () ")"))) (; ";")) (if_statement "if (param_2 != pvVar2) {\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }" (if "if") (parenthesized_expression "(param_2 != pvVar2)" (( "(") (binary_expression "param_2 != pvVar2" (identifier "param_2") (!= "!=") (identifier "pvVar2")) () ")")) (compound_statement "{\nLAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);\n      goto LAB_001c6a85;\n    }" ({ "{") (labeled_statement "LAB_001c6a77:\n      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);" (statement_identifier "LAB_001c6a77") (: ":") (expression_statement "memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);" (call_expression "memcpy(__dest,param_2,(long)pvVar2 - (long)param_2)" (identifier "memcpy") (argument_list "(__dest,param_2,(long)pvVar2 - (long)param_2)" (( "(") (identifier "__dest") (, ",") (identifier "param_2") (, ",") (binary_expression "(long)pvVar2 - (long)param_2" (cast_expression "(long)pvVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar2")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))) (; ";"))) (goto_statement "goto LAB_001c6a85;" (goto "goto") (statement_identifier "LAB_001c6a85") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_002f1e60(__src);" (call_expression "FUN_002f1e60(__src)" (identifier "FUN_002f1e60") (argument_list "(__src)" (( "(") (identifier "__src") () ")"))) (; ";")) (labeled_statement "LAB_001c6a8a:\n  *param_1 = __dest_00;" (statement_identifier "LAB_001c6a8a") (: ":") (expression_statement "*param_1 = __dest_00;" (assignment_expression "*param_1 = __dest_00" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "__dest_00")) (; ";"))) (expression_statement "param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);" (assignment_expression "param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2)" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(long)__dest + ((long)pvVar2 - (long)param_2)" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (parenthesized_expression "((long)pvVar2 - (long)param_2)" (( "(") (binary_expression "(long)pvVar2 - (long)param_2" (cast_expression "(long)pvVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar2")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")")))) (; ";")) (expression_statement "param_1[2] = lVar8;" (assignment_expression "param_1[2] = lVar8" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar8")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original name: _M_realloc_insert<const gold::Layout::Relaxation_debug_check::Section_info&>
   DWARF original prototype: void
   _M_realloc_insert<const_gold::Layout::Relaxation_debug_check::Section_info&>(vector<gold::Layout::Relaxation_debug_check::Section_info,_std::allocator<gold::Layout::Relaxation_debug_check::Section_info>_>
   * this, iterator __position, Section_info * __args#0) */

void __thiscall
std::
vector<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>
::_M_realloc_insert<const_gold::Layout::Relaxation_debug_check::type_2&>
          (vector<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>
           *this,iterator __position,type_2 *__args_0)

{
  void *__dest;
  type_1 *poVar1;
  type_2 *var_9;
  type_2 *var_8;
  uint64_t uVar3;
  type_1 oVar4;
  type_1 oVar5;
  type_3 var_3;
  type_4 __dest_00;
  size_t var_7;
  type_3 var_4;
  type_3 var_6;
  type_4 pSVar9;
  
  var_9 = (this->
           super__Vector_base<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>var_2
           )._M_impl._M_finish;
  var_8 = (this->
          super__Vector_base<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>var_2
          )._M_impl._M_start;
  var_7 = (long)__position._M_current - (long)var_8;
  var_3 = (long)var_9 - (long)var_8 >> 5;
  if (var_3 == 0) {
    var_4 = 1;
LAB_001c6af5:
    var_6 = var_4 << 5;
LAB_001c69f8:
    __dest_00 = (type_4)var_5(var_6);
    pSVar9 = (type_4)((long)&__dest_00->output_section + var_6);
  }
  else {
    var_4 = var_3 * 2;
    var_6 = 0xffffffffffffffe0;
    if ((var_4 < var_3) || (0x7ffffffffffffff < var_4)) goto LAB_001c69f8;
    pSVar9 = (type_4)0x0;
    __dest_00 = (type_4)0x0;
    if (var_4 != 0) goto LAB_001c6af5;
  }
  uVar3 = __args_0->address;
  oVar4 = __args_0->data_size;
  oVar5 = __args_0->offset;
  __dest = (void *)((long)__dest_00 + var_7 + 0x20);
  *(type_5 *)((long)__dest_00 + var_7) = __args_0->output_section;
  ((type_5 *)((long)__dest_00 + var_7))[1] = uVar3;
  poVar1 = (type_1 *)((long)__dest_00 + var_7 + 0x10);
  *poVar1 = oVar4;
  poVar1[1] = oVar5;
  if (__position._M_current == var_8) {
    if (__position._M_current != var_9) goto LAB_001c6a77;
LAB_001c6a85:
    if (var_8 == (type_2 *)0x0) goto LAB_001c6a8a;
  }
  else {
    var_10(__dest_00,var_8,var_7);
    if (__position._M_current != var_9) {
LAB_001c6a77:
      var_11(__dest,__position._M_current,(long)var_9 - (long)__position._M_current);
      goto LAB_001c6a85;
    }
  }
  var_12(var_8);
LAB_001c6a8a:
  (this->
  super__Vector_base<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>var_2
  )._M_impl._M_start = __dest_00;
  (this->
  super__Vector_base<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>var_2
  )._M_impl._M_finish = (type_4)((long)__dest + ((long)var_9 - (long)__position._M_current));
  (this->
  super__Vector_base<gold::Layout::Relaxation_debug_check::type_2,_std::allocator<gold::Layout::Relaxation_debug_check::type_2>var_1>var_2
  )._M_impl._M_end_of_storage = pSVar9;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

void MASKED(undefined8 *param_1,void *param_2,undefined8 *param_3)

{
  void *__dest;
  undefined8 *puVar1;
  void *pvVar2;
  void *__src;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  void *__dest_00;
  size_t __n;
  ulong uVar7;
  long lVar8;
  
  pvVar2 = (void *)param_1[1];
  __src = (void *)*param_1;
  __n = (long)param_2 - (long)__src;
  uVar6 = (long)pvVar2 - (long)__src >> 5;
  if (uVar6 == 0) {
    uVar7 = 1;
LAB_001c6af5:
    lVar8 = uVar7 << 5;
LAB_001c69f8:
    __dest_00 = (void *)FUN_002f0690(lVar8);
    lVar8 = lVar8 + (long)__dest_00;
  }
  else {
    uVar7 = uVar6 * 2;
    lVar8 = -0x20;
    if ((uVar7 < uVar6) || (0x7ffffffffffffff < uVar7)) goto LAB_001c69f8;
    lVar8 = 0;
    __dest_00 = (void *)0x0;
    if (uVar7 != 0) goto LAB_001c6af5;
  }
  uVar3 = param_3[1];
  uVar4 = param_3[2];
  uVar5 = param_3[3];
  __dest = (void *)((long)__dest_00 + __n + 0x20);
  *(undefined8 *)((long)__dest_00 + __n) = *param_3;
  ((undefined8 *)((long)__dest_00 + __n))[1] = uVar3;
  puVar1 = (undefined8 *)((long)__dest_00 + __n + 0x10);
  *puVar1 = uVar4;
  puVar1[1] = uVar5;
  if (param_2 == __src) {
    if (param_2 != pvVar2) goto LAB_001c6a77;
LAB_001c6a85:
    if (__src == (void *)0x0) goto LAB_001c6a8a;
  }
  else {
    memmove(__dest_00,__src,__n);
    if (param_2 != pvVar2) {
LAB_001c6a77:
      memcpy(__dest,param_2,(long)pvVar2 - (long)param_2);
      goto LAB_001c6a85;
    }
  }
  FUN_002f1e60(__src);
LAB_001c6a8a:
  *param_1 = __dest_00;
  param_1[1] = (long)__dest + ((long)pvVar2 - (long)param_2);
  param_1[2] = lVar8;
  return;
}

