
/* DWARF original prototype: void _M_fill_insert(vector<unsigned_int,_std::allocator<unsigned_int>_>
   * this, iterator __position, size_type __n, value_type.conflict2 * __x) */

void __thiscall
std::vector<unsigned_int,_std::allocator<unsigned_int>_>::_M_fill_insert
          (vector<unsigned_int,_std::allocator<unsigned_int>_> *this,iterator __position,
          size_type __n,value_type_conflict2 *__x)

{
  pointer *ppuVar1;
  value_type_conflict2 vVar2;
  value_type_conflict2 *pvVar3;
  long lVar4;
  ulong uVar5;
  size_type sVar6;
  pointer __dest;
  size_t sVar7;
  value_type_conflict2 *__src;
  uint *__src_00;
  size_t __n_00;
  ulong uVar8;
  ulong uVar9;
  pointer puVar10;
  long lVar11;
  value_type_conflict2 *pvVar12;
  void *__dest_00;
  
  if (__n == 0) {
    return;
  }
  pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
            _M_finish;
  if (__n <= (ulong)((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).
                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2)) {
    vVar2 = *__x;
    sVar7 = (long)pvVar12 - (long)__position._M_current;
    if (__n < (ulong)((long)sVar7 >> 2)) {
      __src = pvVar12 + -__n;
      pvVar3 = pvVar12;
      if (pvVar12 != __src) {
        memmove(pvVar12,__src,__n * 4);
        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
                 _M_finish;
      }
      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =
           pvVar3 + __n;
      if (__position._M_current != __src) {
        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),
                __position._M_current,(long)__src - (long)__position._M_current);
      }
      pvVar12 = __position._M_current + __n;
      if (__position._M_current != pvVar12) {
        do {
          *__position._M_current = vVar2;
          __position._M_current = __position._M_current + 1;
        } while (pvVar12 != __position._M_current);
      }
    }
    else {
      lVar11 = __n - ((long)sVar7 >> 2);
      pvVar3 = pvVar12;
      if (lVar11 != 0) {
        lVar4 = 0;
        do {
          pvVar12[lVar4] = vVar2;
          lVar4 = lVar4 + 1;
        } while (lVar11 != lVar4);
        pvVar3 = pvVar12 + lVar11;
      }
      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =
           pvVar3;
      if (pvVar12 != __position._M_current) {
        memmove(pvVar3,__position._M_current,sVar7);
        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
                   _M_finish;
        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);
        do {
          *__position._M_current = vVar2;
          __position._M_current = __position._M_current + 1;
        } while (pvVar12 != __position._M_current);
        return;
      }
      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =
           (pointer)(sVar7 + (long)pvVar3);
    }
    return;
  }
  __src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
             _M_start;
  uVar8 = (long)pvVar12 - (long)__src_00 >> 2;
  if (0x3fffffffffffffff - uVar8 < __n) {
                    /* WARNING: Subroutine does not return */
    __throw_length_error("vector::_M_fill_insert");
  }
  uVar5 = uVar8;
  if (uVar8 <= __n) {
    uVar5 = __n;
  }
  uVar9 = uVar8 + uVar5;
  sVar7 = (long)__position._M_current - (long)__src_00;
  if ((CARRY8(uVar8,uVar5)) || (0x3fffffffffffffff < uVar9)) {
    uVar9 = 0xfffffffffffffffc;
LAB_00229b07:
    __dest = (pointer)operator_new(uVar9);
    __src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
               _M_start;
    pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
              _M_finish;
    puVar10 = (pointer)(uVar9 + (long)__dest);
    __n_00 = (long)__position._M_current - (long)__src_00;
  }
  else {
    if (uVar9 != 0) {
      uVar9 = uVar9 * 4;
      goto LAB_00229b07;
    }
    puVar10 = (pointer)0x0;
    __dest = (pointer)0x0;
    __n_00 = sVar7;
  }
  vVar2 = *__x;
  sVar6 = 0;
  do {
    *(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7) = vVar2;
    sVar6 = sVar6 + 1;
  } while (__n != sVar6);
  __dest_00 = (void *)(__n_00 + __n * 4 + (long)__dest);
  if (__position._M_current == __src_00) {
    if (pvVar12 != __position._M_current) goto LAB_00229b7f;
LAB_00229b9f:
    if (__src_00 == (uint *)0x0) goto LAB_00229ba4;
  }
  else {
    __dest = (pointer)memmove(__dest,__src_00,__n_00);
    if (__position._M_current != pvVar12) {
LAB_00229b7f:
      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);
      goto LAB_00229b9f;
    }
  }
  operator_delete(__src_00);
LAB_00229ba4:
  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_start = __dest;
  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =
       (pointer)((long)__dest_00 + ((long)pvVar12 - (long)__position._M_current));
  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_end_of_storage
       = puVar10;
  return;
}



void FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  long lVar3;
  ulong uVar4;
  void *__dest;
  size_t sVar5;
  undefined4 *__src;
  size_t __n;
  ulong uVar6;
  ulong uVar7;
  long lVar8;
  undefined4 *puVar9;
  void *__dest_00;
  
  if (param_3 == 0) {
    return;
  }
  puVar9 = (undefined4 *)param_1[1];
  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {
    uVar1 = *param_4;
    sVar5 = (long)puVar9 - (long)param_2;
    if (param_3 < (ulong)((long)sVar5 >> 2)) {
      __src = puVar9 + -param_3;
      puVar2 = puVar9;
      if (puVar9 != __src) {
        memmove(puVar9,__src,param_3 * 4);
        puVar2 = (undefined4 *)param_1[1];
      }
      param_1[1] = puVar2 + param_3;
      if (param_2 != __src) {
        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,
                (long)__src - (long)param_2);
      }
      puVar9 = param_2 + param_3;
      if (param_2 != puVar9) {
        do {
          *param_2 = uVar1;
          param_2 = param_2 + 1;
        } while (puVar9 != param_2);
      }
    }
    else {
      lVar8 = param_3 - ((long)sVar5 >> 2);
      puVar2 = puVar9;
      if (lVar8 != 0) {
        lVar3 = 0;
        do {
          puVar9[lVar3] = uVar1;
          lVar3 = lVar3 + 1;
        } while (lVar8 != lVar3);
        puVar2 = puVar9 + lVar8;
      }
      param_1[1] = puVar2;
      if (puVar9 != param_2) {
        memmove(puVar2,param_2,sVar5);
        param_1[1] = param_1[1] + sVar5;
        do {
          *param_2 = uVar1;
          param_2 = param_2 + 1;
        } while (puVar9 != param_2);
        return;
      }
      param_1[1] = sVar5 + (long)puVar2;
    }
    return;
  }
  puVar2 = (undefined4 *)*param_1;
  uVar6 = (long)puVar9 - (long)puVar2 >> 2;
  if (0x3fffffffffffffff - uVar6 < param_3) {
                    /* WARNING: Subroutine does not return */
    FUN_004dcc70("vector::_M_fill_insert");
  }
  uVar4 = uVar6;
  if (uVar6 <= param_3) {
    uVar4 = param_3;
  }
  uVar7 = uVar6 + uVar4;
  sVar5 = (long)param_2 - (long)puVar2;
  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {
    lVar8 = -4;
LAB_00229b07:
    __dest = (void *)FUN_0049cb70(lVar8);
    puVar2 = (undefined4 *)*param_1;
    puVar9 = (undefined4 *)param_1[1];
    lVar8 = lVar8 + (long)__dest;
    __n = (long)param_2 - (long)puVar2;
  }
  else {
    if (uVar7 != 0) {
      lVar8 = uVar7 * 4;
      goto LAB_00229b07;
    }
    lVar8 = 0;
    __dest = (void *)0x0;
    __n = sVar5;
  }
  uVar1 = *param_4;
  uVar6 = 0;
  do {
    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;
    uVar6 = uVar6 + 1;
  } while (param_3 != uVar6);
  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);
  if (param_2 == puVar2) {
    if (puVar9 != param_2) goto LAB_00229b7f;
LAB_00229b9f:
    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;
  }
  else {
    __dest = memmove(__dest,puVar2,__n);
    if (param_2 != puVar9) {
LAB_00229b7f:
      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);
      goto LAB_00229b9f;
    }
  }
  FUN_0049e340(puVar2);
LAB_00229ba4:
  *param_1 = __dest;
  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);
  param_1[2] = lVar8;
  return;
}


TEST RDX,RDX
JZ 0x00229a30
PUSH R15
MOV R15,RCX
PUSH R14
MOV R14,RDI
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RSI
SUB RSP,0x18
MOV R12,qword ptr [RDI + 0x8]
MOV RAX,qword ptr [RDI + 0x10]
SUB RAX,R12
SAR RAX,0x2
CMP RAX,RDX
JC 0x00229aa0
MOV R15D,dword ptr [RCX]
MOV RCX,R12
SUB RCX,RSI
MOV RAX,RCX
SAR RAX,0x2
CMP RDX,RAX
JNC 0x00229a38
SHL RBP,0x2
MOV RCX,R12
MOV RAX,R12
SUB RCX,RBP
CMP R12,RCX
JZ 0x002299e3
MOV RSI,RCX
MOV RDX,RBP
MOV RDI,R12
MOV qword ptr [RSP],RCX
CALL 0x001776d0
MOV RAX,qword ptr [R14 + 0x8]
MOV RCX,qword ptr [RSP]
ADD RAX,RBP
MOV qword ptr [R14 + 0x8],RAX
CMP R13,RCX
JZ 0x00229a03
MOV RDX,RCX
MOV RDI,R12
MOV RSI,R13
SUB RDX,R13
SUB RDI,RDX
CALL 0x001776d0
ADD RBP,R13
CMP R13,RBP
JZ 0x00229a1c
NOP dword ptr [RAX + RAX*0x1]
MOV dword ptr [RBX],R15D
ADD RBX,0x4
CMP RBP,RBX
JNZ 0x00229a10
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
RET
SUB RBP,RAX
JZ 0x00229bf0
XOR EAX,EAX
NOP dword ptr [RAX + RAX*0x1]
MOV dword ptr [R12 + RAX*0x4],R15D
ADD RAX,0x1
CMP RBP,RAX
JNZ 0x00229a48
LEA RDI,[R12 + RBP*0x4]
MOV qword ptr [R14 + 0x8],RDI
CMP R12,R13
JZ 0x00229c00
MOV RDX,RCX
MOV RSI,R13
MOV qword ptr [RSP],RCX
CALL 0x001776d0
MOV RCX,qword ptr [RSP]
ADD qword ptr [R14 + 0x8],RCX
NOP dword ptr [RAX]
MOV dword ptr [RBX],R15D
ADD RBX,0x4
CMP R12,RBX
JNZ 0x00229a80
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDX,0x3fffffffffffffff
MOV RCX,qword ptr [RDI]
MOV RBX,R12
MOV RAX,RDX
SUB RBX,RCX
SAR RBX,0x2
SUB RAX,RBX
CMP RBP,RAX
JA 0x00229c0c
CMP RBP,RBX
MOV RAX,RBX
CMOVNC RAX,RBP
ADD RBX,RAX
SETC AL
SUB RSI,RCX
MOVZX EAX,AL
TEST RAX,RAX
JNZ 0x00229b00
CMP RBX,RDX
JA 0x00229b00
TEST RBX,RBX
JNZ 0x00229be0
MOV RDX,RSI
XOR EBX,EBX
XOR R8D,R8D
JMP 0x00229b2a
MOV RBX,-0x4
MOV RDI,RBX
MOV qword ptr [RSP],RSI
CALL 0x0049cb70
MOV RCX,qword ptr [R14]
MOV RDX,R13
MOV R12,qword ptr [R14 + 0x8]
MOV RSI,qword ptr [RSP]
MOV R8,RAX
ADD RBX,RAX
SUB RDX,RCX
MOV EDI,dword ptr [R15]
ADD RSI,R8
XOR EAX,EAX
NOP word ptr [RAX + RAX*0x1]
MOV dword ptr [RSI + RAX*0x4],EDI
ADD RAX,0x1
CMP RBP,RAX
JNZ 0x00229b38
LEA R15,[RDX + RBP*0x4]
MOV R9,R12
ADD R15,R8
SUB R9,R13
LEA RBP,[R15 + R9*0x1]
CMP R13,RCX
JZ 0x00229bd8
MOV RSI,RCX
MOV RDI,R8
MOV qword ptr [RSP + 0x8],R9
MOV qword ptr [RSP],RCX
CALL 0x001776d0
CMP R13,R12
MOV RCX,qword ptr [RSP]
MOV R9,qword ptr [RSP + 0x8]
MOV R8,RAX
JZ 0x00229bc0
MOV RDX,R9
MOV RSI,R13
MOV RDI,R15
MOV qword ptr [RSP + 0x8],RCX
MOV qword ptr [RSP],R8
CALL 0x00177aa0
MOV R8,qword ptr [RSP]
MOV RCX,qword ptr [RSP + 0x8]
TEST RCX,RCX
JNZ 0x00229bc0
MOV qword ptr [R14],R8
MOV qword ptr [R14 + 0x8],RBP
MOV qword ptr [R14 + 0x10],RBX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,RCX
MOV qword ptr [RSP],R8
CALL 0x0049e340
MOV R8,qword ptr [RSP]
JMP 0x00229ba4
CMP R12,R13
JNZ 0x00229b7f
JMP 0x00229b9f
SHL RBX,0x2
JMP 0x00229b07
MOV RDI,R12
JMP 0x00229a59
ADD RCX,RDI
MOV qword ptr [R14 + 0x8],RCX
JMP 0x00229a1c
LEA RDI,[0x54d821]
CALL 0x004dcc70
(translation_unit "void FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}\n\n" (function_definition "void FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" primitive_type (function_declarator "FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)" identifier (parameter_list "(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "undefined4 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "void *__dest_00;" primitive_type (pointer_declarator "*__dest_00" * identifier) ;) (if_statement "if (param_3 == 0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar9 = (undefined4 *)param_1[1];" (assignment_expression "puVar9 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }" if (parenthesized_expression "(param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2))" ( (binary_expression "param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)" identifier <= (call_expression "(ulong)(param_1[2] - (long)puVar9 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[2] - (long)puVar9 >> 2)" ( (binary_expression "param_1[2] - (long)puVar9 >> 2" (binary_expression "param_1[2] - (long)puVar9" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }" { (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "sVar5 = (long)puVar9 - (long)param_2;" (assignment_expression "sVar5 = (long)puVar9 - (long)param_2" identifier = (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" if (parenthesized_expression "(param_3 < (ulong)((long)sVar5 >> 2))" ( (binary_expression "param_3 < (ulong)((long)sVar5 >> 2)" identifier < (call_expression "(ulong)((long)sVar5 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)sVar5 >> 2)" ( (binary_expression "(long)sVar5 >> 2" (cast_expression "(long)sVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) )) (compound_statement "{\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }" { (expression_statement "__src = puVar9 + -param_3;" (assignment_expression "__src = puVar9 + -param_3" identifier = (binary_expression "puVar9 + -param_3" identifier + (unary_expression "-param_3" - identifier))) ;) (expression_statement "puVar2 = puVar9;" (assignment_expression "puVar2 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }" if (parenthesized_expression "(puVar9 != __src)" ( (binary_expression "puVar9 != __src" identifier != identifier) )) (compound_statement "{\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }" { (expression_statement "memmove(puVar9,__src,param_3 * 4);" (call_expression "memmove(puVar9,__src,param_3 * 4)" identifier (argument_list "(puVar9,__src,param_3 * 4)" ( identifier , identifier , (binary_expression "param_3 * 4" identifier * number_literal) ))) ;) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[1] = puVar2 + param_3;" (assignment_expression "param_1[1] = puVar2 + param_3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "puVar2 + param_3" identifier + identifier)) ;) (if_statement "if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }" if (parenthesized_expression "(param_2 != __src)" ( (binary_expression "param_2 != __src" identifier != identifier) )) (compound_statement "{\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }" { (expression_statement "memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);" (call_expression "memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2)" identifier (argument_list "((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2)" ( (cast_expression "(void *)((long)puVar9 - ((long)__src - (long)param_2))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 - ((long)__src - (long)param_2))" ( (binary_expression "(long)puVar9 - ((long)__src - (long)param_2)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((long)__src - (long)param_2)" ( (binary_expression "(long)__src - (long)param_2" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) , identifier , (binary_expression "(long)__src - (long)param_2" (cast_expression "(long)__src" ( (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 "puVar9 = param_2 + param_3;" (assignment_expression "puVar9 = param_2 + param_3" identifier = (binary_expression "param_2 + param_3" identifier + identifier)) ;) (if_statement "if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }" if (parenthesized_expression "(param_2 != puVar9)" ( (binary_expression "param_2 != puVar9" identifier != identifier) )) (compound_statement "{\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }" { (do_statement "do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);" do (compound_statement "{\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        }" { (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) ;) })) }) (else_clause "else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" else (compound_statement "{\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" { (expression_statement "lVar8 = param_3 - ((long)sVar5 >> 2);" (assignment_expression "lVar8 = param_3 - ((long)sVar5 >> 2)" identifier = (binary_expression "param_3 - ((long)sVar5 >> 2)" identifier - (parenthesized_expression "((long)sVar5 >> 2)" ( (binary_expression "(long)sVar5 >> 2" (cast_expression "(long)sVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar2 = puVar9;" (assignment_expression "puVar2 = puVar9" identifier = identifier) ;) (if_statement "if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }" { (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);" do (compound_statement "{\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        }" { (expression_statement "puVar9[lVar3] = uVar1;" (assignment_expression "puVar9[lVar3] = uVar1" (subscript_expression "puVar9[lVar3]" identifier [ identifier ]) = identifier) ;) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != lVar3)" ( (binary_expression "lVar8 != lVar3" identifier != identifier) )) ;) (expression_statement "puVar2 = puVar9 + lVar8;" (assignment_expression "puVar2 = puVar9 + lVar8" identifier = (binary_expression "puVar9 + lVar8" identifier + identifier)) ;) })) (expression_statement "param_1[1] = puVar2;" (assignment_expression "param_1[1] = puVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }" if (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) (compound_statement "{\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }" { (expression_statement "memmove(puVar2,param_2,sVar5);" (call_expression "memmove(puVar2,param_2,sVar5)" identifier (argument_list "(puVar2,param_2,sVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1[1] = param_1[1] + sVar5;" (assignment_expression "param_1[1] = param_1[1] + sVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + sVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) (do_statement "do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);" do (compound_statement "{\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        }" { (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "param_1[1] = sVar5 + (long)puVar2;" (assignment_expression "param_1[1] = sVar5 + (long)puVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "sVar5 + (long)puVar2" identifier + (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = (long)puVar9 - (long)puVar2 >> 2;" (assignment_expression "uVar6 = (long)puVar9 - (long)puVar2 >> 2" identifier = (binary_expression "(long)puVar9 - (long)puVar2 >> 2" (binary_expression "(long)puVar9 - (long)puVar2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (0x3fffffffffffffff - uVar6 < param_3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_004dcc70("vector::_M_fill_insert");\n  }" if (parenthesized_expression "(0x3fffffffffffffff - uVar6 < param_3)" ( (binary_expression "0x3fffffffffffffff - uVar6 < param_3" (binary_expression "0x3fffffffffffffff - uVar6" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_004dcc70("vector::_M_fill_insert");\n  }" { comment (expression_statement "FUN_004dcc70("vector::_M_fill_insert");" (call_expression "FUN_004dcc70("vector::_M_fill_insert")" identifier (argument_list "("vector::_M_fill_insert")" ( (string_literal ""vector::_M_fill_insert"" " string_content ") ))) ;) })) (expression_statement "uVar4 = uVar6;" (assignment_expression "uVar4 = uVar6" identifier = identifier) ;) (if_statement "if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }" if (parenthesized_expression "(uVar6 <= param_3)" ( (binary_expression "uVar6 <= param_3" identifier <= identifier) )) (compound_statement "{\n    uVar4 = param_3;\n  }" { (expression_statement "uVar4 = param_3;" (assignment_expression "uVar4 = param_3" identifier = identifier) ;) })) (expression_statement "uVar7 = uVar6 + uVar4;" (assignment_expression "uVar7 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "sVar5 = (long)param_2 - (long)puVar2;" (assignment_expression "sVar5 = (long)param_2 - (long)puVar2" identifier = (binary_expression "(long)param_2 - (long)puVar2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" if (parenthesized_expression "((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7))" ( (binary_expression "(CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)" (parenthesized_expression "(CARRY8(uVar6,uVar4))" ( (call_expression "CARRY8(uVar6,uVar4)" identifier (argument_list "(uVar6,uVar4)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x3fffffffffffffff < uVar7)" ( (binary_expression "0x3fffffffffffffff < uVar7" number_literal < identifier) ))) )) (compound_statement "{\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }" { (expression_statement "lVar8 = -4;" (assignment_expression "lVar8 = -4" identifier = number_literal) ;) (labeled_statement "LAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);" statement_identifier : (expression_statement "__dest = (void *)FUN_0049cb70(lVar8);" (assignment_expression "__dest = (void *)FUN_0049cb70(lVar8)" identifier = (cast_expression "(void *)FUN_0049cb70(lVar8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))))) ;)) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[1];" (assignment_expression "puVar9 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "lVar8 = lVar8 + (long)__dest;" (assignment_expression "lVar8 = lVar8 + (long)__dest" identifier = (binary_expression "lVar8 + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "__n = (long)param_2 - (long)puVar2;" (assignment_expression "__n = (long)param_2 - (long)puVar2" identifier = (binary_expression "(long)param_2 - (long)puVar2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }) (else_clause "else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" else (compound_statement "{\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" { (if_statement "if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }" { (expression_statement "lVar8 = uVar7 * 4;" (assignment_expression "lVar8 = uVar7 * 4" identifier = (binary_expression "uVar7 * 4" identifier * number_literal)) ;) (goto_statement "goto LAB_00229b07;" goto statement_identifier ;) })) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__n = sVar5;" (assignment_expression "__n = sVar5" identifier = identifier) ;) }))) (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);" do (compound_statement "{\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  }" { (expression_statement "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;" (assignment_expression "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1" (pointer_expression "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5)" * (cast_expression "(undefined4 *)((long)__dest + uVar6 * 4 + sVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + uVar6 * 4 + sVar5)" ( (binary_expression "(long)__dest + uVar6 * 4 + sVar5" (binary_expression "(long)__dest + uVar6 * 4" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar6 * 4" identifier * number_literal)) + identifier) )))) = identifier) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != uVar6)" ( (binary_expression "param_3 != uVar6" identifier != identifier) )) ;) (expression_statement "__dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);" (assignment_expression "__dest_00 = (void *)(__n + param_3 * 4 + (long)__dest)" identifier = (cast_expression "(void *)(__n + param_3 * 4 + (long)__dest)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__n + param_3 * 4 + (long)__dest)" ( (binary_expression "__n + param_3 * 4 + (long)__dest" (binary_expression "__n + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" if (parenthesized_expression "(param_2 == puVar2)" ( (binary_expression "param_2 == puVar2" identifier == identifier) )) (compound_statement "{\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }" { (if_statement "if (puVar9 != param_2) goto LAB_00229b7f;" if (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) (goto_statement "goto LAB_00229b7f;" goto statement_identifier ;)) (labeled_statement "LAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;" statement_identifier : (if_statement "if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229ba4;" goto statement_identifier ;))) }) (else_clause "else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" else (compound_statement "{\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" { (expression_statement "__dest = memmove(__dest,puVar2,__n);" (assignment_expression "__dest = memmove(__dest,puVar2,__n)" identifier = (call_expression "memmove(__dest,puVar2,__n)" identifier (argument_list "(__dest,puVar2,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }" if (parenthesized_expression "(param_2 != puVar9)" ( (binary_expression "param_2 != puVar9" identifier != identifier) )) (compound_statement "{\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }" { (labeled_statement "LAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);" statement_identifier : (expression_statement "memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);" (call_expression "memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2)" identifier (argument_list "(__dest_00,param_2,(long)puVar9 - (long)param_2)" ( identifier , identifier , (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" ( (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_00229b9f;" goto statement_identifier ;) })) }))) (expression_statement "FUN_0049e340(puVar2);" (call_expression "FUN_0049e340(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (labeled_statement "LAB_00229ba4:\n  *param_1 = __dest;" statement_identifier : (expression_statement "*param_1 = __dest;" (assignment_expression "*param_1 = __dest" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);" (assignment_expression "param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest_00 + ((long)puVar9 - (long)param_2)" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)puVar9 - (long)param_2)" ( (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" ( (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 prototype: void _M_fill_insert(vector<unsigned_int,_std::allocator<unsigned_int>_>\n   * this, iterator __position, size_type __n, value_type.conflict2 * __x) */\n\nvoid __thiscall\nstd::vector<unsigned_int,_std::allocator<unsigned_int>_>::_M_fill_insert\n          (vector<unsigned_int,_std::allocator<unsigned_int>_> *this,iterator __position,\n          size_type __n,value_type_conflict2 *__x)\n\n{\n  pointer *ppuVar1;\n  value_type_conflict2 vVar2;\n  value_type_conflict2 *pvVar3;\n  long lVar4;\n  ulong uVar5;\n  size_type sVar6;\n  pointer __dest;\n  size_t sVar7;\n  value_type_conflict2 *__src;\n  uint *__src_00;\n  size_t __n_00;\n  ulong uVar8;\n  ulong uVar9;\n  pointer puVar10;\n  long lVar11;\n  value_type_conflict2 *pvVar12;\n  void *__dest_00;\n  \n  if (__n == 0) {\n    return;\n  }\n  pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n            _M_finish;\n  if (__n <= (ulong)((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2)) {\n    vVar2 = *__x;\n    sVar7 = (long)pvVar12 - (long)__position._M_current;\n    if (__n < (ulong)((long)sVar7 >> 2)) {\n      __src = pvVar12 + -__n;\n      pvVar3 = pvVar12;\n      if (pvVar12 != __src) {\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n;\n      if (__position._M_current != __src) {\n        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\n      }\n      pvVar12 = __position._M_current + __n;\n      if (__position._M_current != pvVar12) {\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }\n    }\n    else {\n      lVar11 = __n - ((long)sVar7 >> 2);\n      pvVar3 = pvVar12;\n      if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;\n      if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);\n    }\n    return;\n  }\n  __src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n             _M_start;\n  uVar8 = (long)pvVar12 - (long)__src_00 >> 2;\n  if (0x3fffffffffffffff - uVar8 < __n) {\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_fill_insert");\n  }\n  uVar5 = uVar8;\n  if (uVar8 <= __n) {\n    uVar5 = __n;\n  }\n  uVar9 = uVar8 + uVar5;\n  sVar7 = (long)__position._M_current - (long)__src_00;\n  if ((CARRY8(uVar8,uVar5)) || (0x3fffffffffffffff < uVar9)) {\n    uVar9 = 0xfffffffffffffffc;\nLAB_00229b07:\n    __dest = (pointer)operator_new(uVar9);\n    __src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n               _M_start;\n    pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n              _M_finish;\n    puVar10 = (pointer)(uVar9 + (long)__dest);\n    __n_00 = (long)__position._M_current - (long)__src_00;\n  }\n  else {\n    if (uVar9 != 0) {\n      uVar9 = uVar9 * 4;\n      goto LAB_00229b07;\n    }\n    puVar10 = (pointer)0x0;\n    __dest = (pointer)0x0;\n    __n_00 = sVar7;\n  }\n  vVar2 = *__x;\n  sVar6 = 0;\n  do {\n    *(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7) = vVar2;\n    sVar6 = sVar6 + 1;\n  } while (__n != sVar6);\n  __dest_00 = (void *)(__n_00 + __n * 4 + (long)__dest);\n  if (__position._M_current == __src_00) {\n    if (pvVar12 != __position._M_current) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (__src_00 == (uint *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = (pointer)memmove(__dest,__src_00,__n_00);\n    if (__position._M_current != pvVar12) {\nLAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);\n      goto LAB_00229b9f;\n    }\n  }\n  operator_delete(__src_00);\nLAB_00229ba4:\n  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_start = __dest;\n  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n       (pointer)((long)__dest_00 + ((long)pvVar12 - (long)__position._M_current));\n  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_end_of_storage\n       = puVar10;\n  return;\n}\n\n" comment (declaration "void __thiscall\nstd::vector<unsigned_int,_std::allocator<unsigned_int>_>::_M_fill_insert\n          (vector<unsigned_int,_std::allocator<unsigned_int>_> *this,iterator __position,\n          size_type __n,value_type_conflict2 *__x)\n\n{\n  pointer *ppuVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::vector<" identifier : : identifier <) identifier , (ERROR "_std::allocator<unsigned_int>_>::_M_fill_insert\n          (vector<unsigned_int,_std::allocator<unsigned_int>_> *this,iterator __position,\n          size_type __n,value_type_conflict2 *__x)\n\n{\n  pointer" identifier : : identifier < identifier > identifier > : : (function_declarator "_M_fill_insert\n          (vector<unsigned_int,_std::allocator<unsigned_int>_> *this,iterator __position,\n          size_type __n,value_type_conflict2 *__x)" identifier (parameter_list "(vector<unsigned_int,_std::allocator<unsigned_int>_> *this,iterator __position,\n          size_type __n,value_type_conflict2 *__x)" ( (parameter_declaration "vector<unsigned_int" type_identifier (ERROR "<" <) identifier) , (parameter_declaration "_std::allocator<unsigned_int>_> *this" type_identifier (ERROR "::allocator<unsigned_int>_>" : : identifier < identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "iterator __position" type_identifier identifier) , (parameter_declaration "size_type __n" type_identifier identifier) , (parameter_declaration "value_type_conflict2 *__x" type_identifier (pointer_declarator "*__x" * identifier)) ))) { identifier) (pointer_declarator "*ppuVar1" * identifier) ;) (declaration "value_type_conflict2 vVar2;" type_identifier identifier ;) (declaration "value_type_conflict2 *pvVar3;" type_identifier (pointer_declarator "*pvVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "size_type sVar6;" type_identifier identifier ;) (declaration "pointer __dest;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "value_type_conflict2 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "uint *__src_00;" type_identifier (pointer_declarator "*__src_00" * identifier) ;) (declaration "size_t __n_00;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "pointer puVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "value_type_conflict2 *pvVar12;" type_identifier (pointer_declarator "*pvVar12" * identifier) ;) (declaration "void *__dest_00;" primitive_type (pointer_declarator "*__dest_00" * identifier) ;) (if_statement "if (__n == 0) {\n    return;\n  }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n            _M_finish;" (assignment_expression "pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n            _M_finish" identifier = (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n            _M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__n <= (ulong)((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2)) {\n    vVar2 = *__x;\n    sVar7 = (long)pvVar12 - (long)__position._M_current;\n    if (__n < (ulong)((long)sVar7 >> 2)) {\n      __src = pvVar12 + -__n;\n      pvVar3 = pvVar12;\n      if (pvVar12 != __src) {\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n;\n      if (__position._M_current != __src) {\n        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\n      }\n      pvVar12 = __position._M_current + __n;\n      if (__position._M_current != pvVar12) {\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }\n    }\n    else {\n      lVar11 = __n - ((long)sVar7 >> 2);\n      pvVar3 = pvVar12;\n      if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;\n      if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);\n    }\n    return;\n  }" if (parenthesized_expression "(__n <= (ulong)((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2))" ( (binary_expression "__n <= (ulong)((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2)" identifier <= (call_expression "(ulong)((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2)" ( (binary_expression "(long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12 >> 2" (binary_expression "(long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage - (long)pvVar12" (cast_expression "(long)(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl._M_end_of_storage" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n                           _M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    vVar2 = *__x;\n    sVar7 = (long)pvVar12 - (long)__position._M_current;\n    if (__n < (ulong)((long)sVar7 >> 2)) {\n      __src = pvVar12 + -__n;\n      pvVar3 = pvVar12;\n      if (pvVar12 != __src) {\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n;\n      if (__position._M_current != __src) {\n        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\n      }\n      pvVar12 = __position._M_current + __n;\n      if (__position._M_current != pvVar12) {\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }\n    }\n    else {\n      lVar11 = __n - ((long)sVar7 >> 2);\n      pvVar3 = pvVar12;\n      if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;\n      if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);\n    }\n    return;\n  }" { (expression_statement "vVar2 = *__x;" (assignment_expression "vVar2 = *__x" identifier = (pointer_expression "*__x" * identifier)) ;) (expression_statement "sVar7 = (long)pvVar12 - (long)__position._M_current;" (assignment_expression "sVar7 = (long)pvVar12 - (long)__position._M_current" identifier = (binary_expression "(long)pvVar12 - (long)__position._M_current" (cast_expression "(long)pvVar12" ( (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)))) ;) (if_statement "if (__n < (ulong)((long)sVar7 >> 2)) {\n      __src = pvVar12 + -__n;\n      pvVar3 = pvVar12;\n      if (pvVar12 != __src) {\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n;\n      if (__position._M_current != __src) {\n        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\n      }\n      pvVar12 = __position._M_current + __n;\n      if (__position._M_current != pvVar12) {\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }\n    }\n    else {\n      lVar11 = __n - ((long)sVar7 >> 2);\n      pvVar3 = pvVar12;\n      if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;\n      if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);\n    }" if (parenthesized_expression "(__n < (ulong)((long)sVar7 >> 2))" ( (binary_expression "__n < (ulong)((long)sVar7 >> 2)" identifier < (call_expression "(ulong)((long)sVar7 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)sVar7 >> 2)" ( (binary_expression "(long)sVar7 >> 2" (cast_expression "(long)sVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) )) (compound_statement "{\n      __src = pvVar12 + -__n;\n      pvVar3 = pvVar12;\n      if (pvVar12 != __src) {\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n;\n      if (__position._M_current != __src) {\n        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\n      }\n      pvVar12 = __position._M_current + __n;\n      if (__position._M_current != pvVar12) {\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }\n    }" { (expression_statement "__src = pvVar12 + -__n;" (assignment_expression "__src = pvVar12 + -__n" identifier = (binary_expression "pvVar12 + -__n" identifier + (unary_expression "-__n" - identifier))) ;) (expression_statement "pvVar3 = pvVar12;" (assignment_expression "pvVar3 = pvVar12" identifier = identifier) ;) (if_statement "if (pvVar12 != __src) {\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }" if (parenthesized_expression "(pvVar12 != __src)" ( (binary_expression "pvVar12 != __src" identifier != identifier) )) (compound_statement "{\n        memmove(pvVar12,__src,__n * 4);\n        pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;\n      }" { (expression_statement "memmove(pvVar12,__src,__n * 4);" (call_expression "memmove(pvVar12,__src,__n * 4)" identifier (argument_list "(pvVar12,__src,__n * 4)" ( identifier , identifier , (binary_expression "__n * 4" identifier * number_literal) ))) ;) (expression_statement "pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish;" (assignment_expression "pvVar3 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish" identifier = (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                 _M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (expression_statement "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n;" (assignment_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3 + __n" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "pvVar3 + __n" identifier + identifier)) ;) (if_statement "if (__position._M_current != __src) {\n        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\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        memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);\n      }" { (expression_statement "memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current);" (call_expression "memmove((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current)" identifier (argument_list "((void *)((long)pvVar12 - ((long)__src - (long)__position._M_current)),\n                __position._M_current,(long)__src - (long)__position._M_current)" ( (cast_expression "(void *)((long)pvVar12 - ((long)__src - (long)__position._M_current))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar12 - ((long)__src - (long)__position._M_current))" ( (binary_expression "(long)pvVar12 - ((long)__src - (long)__position._M_current)" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((long)__src - (long)__position._M_current)" ( (binary_expression "(long)__src - (long)__position._M_current" (cast_expression "(long)__src" ( (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))) ))) ))) , (field_expression "__position._M_current" identifier . field_identifier) , (binary_expression "(long)__src - (long)__position._M_current" (cast_expression "(long)__src" ( (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 "pvVar12 = __position._M_current + __n;" (assignment_expression "pvVar12 = __position._M_current + __n" identifier = (binary_expression "__position._M_current + __n" (field_expression "__position._M_current" identifier . field_identifier) + identifier)) ;) (if_statement "if (__position._M_current != pvVar12) {\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }" if (parenthesized_expression "(__position._M_current != pvVar12)" ( (binary_expression "__position._M_current != pvVar12" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n      }" { (do_statement "do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);" do (compound_statement "{\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        }" { (expression_statement "*__position._M_current = vVar2;" (assignment_expression "*__position._M_current = vVar2" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "__position._M_current = __position._M_current + 1;" (assignment_expression "__position._M_current = __position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }) while (parenthesized_expression "(pvVar12 != __position._M_current)" ( (binary_expression "pvVar12 != __position._M_current" identifier != (field_expression "__position._M_current" identifier . field_identifier)) )) ;) })) }) (else_clause "else {\n      lVar11 = __n - ((long)sVar7 >> 2);\n      pvVar3 = pvVar12;\n      if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;\n      if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);\n    }" else (compound_statement "{\n      lVar11 = __n - ((long)sVar7 >> 2);\n      pvVar3 = pvVar12;\n      if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;\n      if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }\n      (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);\n    }" { (expression_statement "lVar11 = __n - ((long)sVar7 >> 2);" (assignment_expression "lVar11 = __n - ((long)sVar7 >> 2)" identifier = (binary_expression "__n - ((long)sVar7 >> 2)" identifier - (parenthesized_expression "((long)sVar7 >> 2)" ( (binary_expression "(long)sVar7 >> 2" (cast_expression "(long)sVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "pvVar3 = pvVar12;" (assignment_expression "pvVar3 = pvVar12" identifier = identifier) ;) (if_statement "if (lVar11 != 0) {\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }" if (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar4 = 0;\n        do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);\n        pvVar3 = pvVar12 + lVar11;\n      }" { (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        } while (lVar11 != lVar4);" do (compound_statement "{\n          pvVar12[lVar4] = vVar2;\n          lVar4 = lVar4 + 1;\n        }" { (expression_statement "pvVar12[lVar4] = vVar2;" (assignment_expression "pvVar12[lVar4] = vVar2" (subscript_expression "pvVar12[lVar4]" identifier [ identifier ]) = identifier) ;) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar11 != lVar4)" ( (binary_expression "lVar11 != lVar4" identifier != identifier) )) ;) (expression_statement "pvVar3 = pvVar12 + lVar11;" (assignment_expression "pvVar3 = pvVar12 + lVar11" identifier = (binary_expression "pvVar12 + lVar11" identifier + identifier)) ;) })) (expression_statement "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3;" (assignment_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           pvVar3" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pvVar12 != __position._M_current) {\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }" if (parenthesized_expression "(pvVar12 != __position._M_current)" ( (binary_expression "pvVar12 != __position._M_current" identifier != (field_expression "__position._M_current" identifier . field_identifier)) )) (compound_statement "{\n        memmove(pvVar3,__position._M_current,sVar7);\n        ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;\n        *ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);\n        do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);\n        return;\n      }" { (expression_statement "memmove(pvVar3,__position._M_current,sVar7);" (call_expression "memmove(pvVar3,__position._M_current,sVar7)" identifier (argument_list "(pvVar3,__position._M_current,sVar7)" ( identifier , (field_expression "__position._M_current" identifier . field_identifier) , identifier ))) ;) (expression_statement "ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish;" (assignment_expression "ppuVar1 = &(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish" identifier = (pointer_expression "&(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish" & (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                   _M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppuVar1 = (pointer)((long)*ppuVar1 + sVar7);" (assignment_expression "*ppuVar1 = (pointer)((long)*ppuVar1 + sVar7)" (pointer_expression "*ppuVar1" * identifier) = (call_expression "(pointer)((long)*ppuVar1 + sVar7)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)*ppuVar1 + sVar7)" ( (binary_expression "(long)*ppuVar1 + sVar7" (cast_expression "(long)*ppuVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar1" * identifier)) + identifier) )))) ;) (do_statement "do {\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        } while (pvVar12 != __position._M_current);" do (compound_statement "{\n          *__position._M_current = vVar2;\n          __position._M_current = __position._M_current + 1;\n        }" { (expression_statement "*__position._M_current = vVar2;" (assignment_expression "*__position._M_current = vVar2" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "__position._M_current = __position._M_current + 1;" (assignment_expression "__position._M_current = __position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }) while (parenthesized_expression "(pvVar12 != __position._M_current)" ( (binary_expression "pvVar12 != __position._M_current" identifier != (field_expression "__position._M_current" identifier . field_identifier)) )) ;) (return_statement "return;" return ;) })) (expression_statement "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3);" (assignment_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n           (pointer)(sVar7 + (long)pvVar3)" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (call_expression "(pointer)(sVar7 + (long)pvVar3)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(sVar7 + (long)pvVar3)" ( (binary_expression "sVar7 + (long)pvVar3" identifier + (cast_expression "(long)pvVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "__src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n             _M_start;" (assignment_expression "__src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n             _M_start" identifier = (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n             _M_start" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar8 = (long)pvVar12 - (long)__src_00 >> 2;" (assignment_expression "uVar8 = (long)pvVar12 - (long)__src_00 >> 2" identifier = (binary_expression "(long)pvVar12 - (long)__src_00 >> 2" (binary_expression "(long)pvVar12 - (long)__src_00" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (0x3fffffffffffffff - uVar8 < __n) {\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_fill_insert");\n  }" if (parenthesized_expression "(0x3fffffffffffffff - uVar8 < __n)" ( (binary_expression "0x3fffffffffffffff - uVar8 < __n" (binary_expression "0x3fffffffffffffff - uVar8" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_fill_insert");\n  }" { comment (expression_statement "__throw_length_error("vector::_M_fill_insert");" (call_expression "__throw_length_error("vector::_M_fill_insert")" identifier (argument_list "("vector::_M_fill_insert")" ( (string_literal ""vector::_M_fill_insert"" " string_content ") ))) ;) })) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) (if_statement "if (uVar8 <= __n) {\n    uVar5 = __n;\n  }" if (parenthesized_expression "(uVar8 <= __n)" ( (binary_expression "uVar8 <= __n" identifier <= identifier) )) (compound_statement "{\n    uVar5 = __n;\n  }" { (expression_statement "uVar5 = __n;" (assignment_expression "uVar5 = __n" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar8 + uVar5;" (assignment_expression "uVar9 = uVar8 + uVar5" identifier = (binary_expression "uVar8 + uVar5" identifier + identifier)) ;) (expression_statement "sVar7 = (long)__position._M_current - (long)__src_00;" (assignment_expression "sVar7 = (long)__position._M_current - (long)__src_00" identifier = (binary_expression "(long)__position._M_current - (long)__src_00" (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_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if ((CARRY8(uVar8,uVar5)) || (0x3fffffffffffffff < uVar9)) {\n    uVar9 = 0xfffffffffffffffc;\nLAB_00229b07:\n    __dest = (pointer)operator_new(uVar9);\n    __src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n               _M_start;\n    pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n              _M_finish;\n    puVar10 = (pointer)(uVar9 + (long)__dest);\n    __n_00 = (long)__position._M_current - (long)__src_00;\n  }\n  else {\n    if (uVar9 != 0) {\n      uVar9 = uVar9 * 4;\n      goto LAB_00229b07;\n    }\n    puVar10 = (pointer)0x0;\n    __dest = (pointer)0x0;\n    __n_00 = sVar7;\n  }" if (parenthesized_expression "((CARRY8(uVar8,uVar5)) || (0x3fffffffffffffff < uVar9))" ( (binary_expression "(CARRY8(uVar8,uVar5)) || (0x3fffffffffffffff < uVar9)" (parenthesized_expression "(CARRY8(uVar8,uVar5))" ( (call_expression "CARRY8(uVar8,uVar5)" identifier (argument_list "(uVar8,uVar5)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x3fffffffffffffff < uVar9)" ( (binary_expression "0x3fffffffffffffff < uVar9" number_literal < identifier) ))) )) (compound_statement "{\n    uVar9 = 0xfffffffffffffffc;\nLAB_00229b07:\n    __dest = (pointer)operator_new(uVar9);\n    __src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n               _M_start;\n    pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n              _M_finish;\n    puVar10 = (pointer)(uVar9 + (long)__dest);\n    __n_00 = (long)__position._M_current - (long)__src_00;\n  }" { (expression_statement "uVar9 = 0xfffffffffffffffc;" (assignment_expression "uVar9 = 0xfffffffffffffffc" identifier = number_literal) ;) (labeled_statement "LAB_00229b07:\n    __dest = (pointer)operator_new(uVar9);" statement_identifier : (expression_statement "__dest = (pointer)operator_new(uVar9);" (assignment_expression "__dest = (pointer)operator_new(uVar9)" identifier = (cast_expression "(pointer)operator_new(uVar9)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))))) ;)) (expression_statement "__src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n               _M_start;" (assignment_expression "__src_00 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n               _M_start" identifier = (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n               _M_start" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n              _M_finish;" (assignment_expression "pvVar12 = (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n              _M_finish" identifier = (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n              _M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "puVar10 = (pointer)(uVar9 + (long)__dest);" (assignment_expression "puVar10 = (pointer)(uVar9 + (long)__dest)" identifier = (call_expression "(pointer)(uVar9 + (long)__dest)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(uVar9 + (long)__dest)" ( (binary_expression "uVar9 + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "__n_00 = (long)__position._M_current - (long)__src_00;" (assignment_expression "__n_00 = (long)__position._M_current - (long)__src_00" identifier = (binary_expression "(long)__position._M_current - (long)__src_00" (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_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }) (else_clause "else {\n    if (uVar9 != 0) {\n      uVar9 = uVar9 * 4;\n      goto LAB_00229b07;\n    }\n    puVar10 = (pointer)0x0;\n    __dest = (pointer)0x0;\n    __n_00 = sVar7;\n  }" else (compound_statement "{\n    if (uVar9 != 0) {\n      uVar9 = uVar9 * 4;\n      goto LAB_00229b07;\n    }\n    puVar10 = (pointer)0x0;\n    __dest = (pointer)0x0;\n    __n_00 = sVar7;\n  }" { (if_statement "if (uVar9 != 0) {\n      uVar9 = uVar9 * 4;\n      goto LAB_00229b07;\n    }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar9 = uVar9 * 4;\n      goto LAB_00229b07;\n    }" { (expression_statement "uVar9 = uVar9 * 4;" (assignment_expression "uVar9 = uVar9 * 4" identifier = (binary_expression "uVar9 * 4" identifier * number_literal)) ;) (goto_statement "goto LAB_00229b07;" goto statement_identifier ;) })) (expression_statement "puVar10 = (pointer)0x0;" (assignment_expression "puVar10 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "__dest = (pointer)0x0;" (assignment_expression "__dest = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "__n_00 = sVar7;" (assignment_expression "__n_00 = sVar7" identifier = identifier) ;) }))) (expression_statement "vVar2 = *__x;" (assignment_expression "vVar2 = *__x" identifier = (pointer_expression "*__x" * identifier)) ;) (expression_statement "sVar6 = 0;" (assignment_expression "sVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7) = vVar2;\n    sVar6 = sVar6 + 1;\n  } while (__n != sVar6);" do (compound_statement "{\n    *(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7) = vVar2;\n    sVar6 = sVar6 + 1;\n  }" { (expression_statement "*(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7) = vVar2;" (assignment_expression "*(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7) = vVar2" (pointer_expression "*(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7)" * (cast_expression "(value_type_conflict2 *)((long)__dest + sVar6 * 4 + sVar7)" ( (type_descriptor "value_type_conflict2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + sVar6 * 4 + sVar7)" ( (binary_expression "(long)__dest + sVar6 * 4 + sVar7" (binary_expression "(long)__dest + sVar6 * 4" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "sVar6 * 4" identifier * number_literal)) + identifier) )))) = identifier) ;) (expression_statement "sVar6 = sVar6 + 1;" (assignment_expression "sVar6 = sVar6 + 1" identifier = (binary_expression "sVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__n != sVar6)" ( (binary_expression "__n != sVar6" identifier != identifier) )) ;) (expression_statement "__dest_00 = (void *)(__n_00 + __n * 4 + (long)__dest);" (assignment_expression "__dest_00 = (void *)(__n_00 + __n * 4 + (long)__dest)" identifier = (cast_expression "(void *)(__n_00 + __n * 4 + (long)__dest)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__n_00 + __n * 4 + (long)__dest)" ( (binary_expression "__n_00 + __n * 4 + (long)__dest" (binary_expression "__n_00 + __n * 4" identifier + (binary_expression "__n * 4" identifier * number_literal)) + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if (__position._M_current == __src_00) {\n    if (pvVar12 != __position._M_current) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (__src_00 == (uint *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = (pointer)memmove(__dest,__src_00,__n_00);\n    if (__position._M_current != pvVar12) {\nLAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);\n      goto LAB_00229b9f;\n    }\n  }" if (parenthesized_expression "(__position._M_current == __src_00)" ( (binary_expression "__position._M_current == __src_00" (field_expression "__position._M_current" identifier . field_identifier) == identifier) )) (compound_statement "{\n    if (pvVar12 != __position._M_current) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (__src_00 == (uint *)0x0) goto LAB_00229ba4;\n  }" { (if_statement "if (pvVar12 != __position._M_current) goto LAB_00229b7f;" if (parenthesized_expression "(pvVar12 != __position._M_current)" ( (binary_expression "pvVar12 != __position._M_current" identifier != (field_expression "__position._M_current" identifier . field_identifier)) )) (goto_statement "goto LAB_00229b7f;" goto statement_identifier ;)) (labeled_statement "LAB_00229b9f:\n    if (__src_00 == (uint *)0x0) goto LAB_00229ba4;" statement_identifier : (if_statement "if (__src_00 == (uint *)0x0) goto LAB_00229ba4;" if (parenthesized_expression "(__src_00 == (uint *)0x0)" ( (binary_expression "__src_00 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229ba4;" goto statement_identifier ;))) }) (else_clause "else {\n    __dest = (pointer)memmove(__dest,__src_00,__n_00);\n    if (__position._M_current != pvVar12) {\nLAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);\n      goto LAB_00229b9f;\n    }\n  }" else (compound_statement "{\n    __dest = (pointer)memmove(__dest,__src_00,__n_00);\n    if (__position._M_current != pvVar12) {\nLAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);\n      goto LAB_00229b9f;\n    }\n  }" { (expression_statement "__dest = (pointer)memmove(__dest,__src_00,__n_00);" (assignment_expression "__dest = (pointer)memmove(__dest,__src_00,__n_00)" identifier = (cast_expression "(pointer)memmove(__dest,__src_00,__n_00)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "memmove(__dest,__src_00,__n_00)" identifier (argument_list "(__dest,__src_00,__n_00)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (__position._M_current != pvVar12) {\nLAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);\n      goto LAB_00229b9f;\n    }" if (parenthesized_expression "(__position._M_current != pvVar12)" ( (binary_expression "__position._M_current != pvVar12" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\nLAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);\n      goto LAB_00229b9f;\n    }" { (labeled_statement "LAB_00229b7f:\n      memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);" statement_identifier : (expression_statement "memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current);" (call_expression "memcpy(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current)" identifier (argument_list "(__dest_00,__position._M_current,(long)pvVar12 - (long)__position._M_current)" ( identifier , (field_expression "__position._M_current" identifier . field_identifier) , (binary_expression "(long)pvVar12 - (long)__position._M_current" (cast_expression "(long)pvVar12" ( (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_00229b9f;" goto statement_identifier ;) })) }))) (expression_statement "operator_delete(__src_00);" (call_expression "operator_delete(__src_00)" identifier (argument_list "(__src_00)" ( identifier ))) ;) (labeled_statement "LAB_00229ba4:\n  (this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_start = __dest;" statement_identifier : (expression_statement "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_start = __dest;" (assignment_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_start = __dest" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_start" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;)) (expression_statement "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n       (pointer)((long)__dest_00 + ((long)pvVar12 - (long)__position._M_current));" (assignment_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish =\n       (pointer)((long)__dest_00 + ((long)pvVar12 - (long)__position._M_current))" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_finish" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (call_expression "(pointer)((long)__dest_00 + ((long)pvVar12 - (long)__position._M_current))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)__dest_00 + ((long)pvVar12 - (long)__position._M_current))" ( (binary_expression "(long)__dest_00 + ((long)pvVar12 - (long)__position._M_current)" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)pvVar12 - (long)__position._M_current)" ( (binary_expression "(long)pvVar12 - (long)__position._M_current" (cast_expression "(long)pvVar12" ( (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->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_end_of_storage\n       = puVar10;" (assignment_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_end_of_storage\n       = puVar10" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl._M_end_of_storage" (field_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(this->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "this->super__Vector_base<unsigned_int,_std::" (comma_expression "this->super__Vector_base<unsigned_int,_std" (binary_expression "this->super__Vector_base<unsigned_int" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}\n\n" (function_definition "void FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" primitive_type (function_declarator "FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)" identifier (parameter_list "(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "undefined4 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "void *__dest_00;" primitive_type (pointer_declarator "*__dest_00" * identifier) ;) (if_statement "if (param_3 == 0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar9 = (undefined4 *)param_1[1];" (assignment_expression "puVar9 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }" if (parenthesized_expression "(param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2))" ( (binary_expression "param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)" identifier <= (call_expression "(ulong)(param_1[2] - (long)puVar9 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[2] - (long)puVar9 >> 2)" ( (binary_expression "param_1[2] - (long)puVar9 >> 2" (binary_expression "param_1[2] - (long)puVar9" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }" { (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "sVar5 = (long)puVar9 - (long)param_2;" (assignment_expression "sVar5 = (long)puVar9 - (long)param_2" identifier = (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" if (parenthesized_expression "(param_3 < (ulong)((long)sVar5 >> 2))" ( (binary_expression "param_3 < (ulong)((long)sVar5 >> 2)" identifier < (call_expression "(ulong)((long)sVar5 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)sVar5 >> 2)" ( (binary_expression "(long)sVar5 >> 2" (cast_expression "(long)sVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) )) (compound_statement "{\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }" { (expression_statement "__src = puVar9 + -param_3;" (assignment_expression "__src = puVar9 + -param_3" identifier = (binary_expression "puVar9 + -param_3" identifier + (unary_expression "-param_3" - identifier))) ;) (expression_statement "puVar2 = puVar9;" (assignment_expression "puVar2 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }" if (parenthesized_expression "(puVar9 != __src)" ( (binary_expression "puVar9 != __src" identifier != identifier) )) (compound_statement "{\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }" { (expression_statement "memmove(puVar9,__src,param_3 * 4);" (call_expression "memmove(puVar9,__src,param_3 * 4)" identifier (argument_list "(puVar9,__src,param_3 * 4)" ( identifier , identifier , (binary_expression "param_3 * 4" identifier * number_literal) ))) ;) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[1] = puVar2 + param_3;" (assignment_expression "param_1[1] = puVar2 + param_3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "puVar2 + param_3" identifier + identifier)) ;) (if_statement "if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }" if (parenthesized_expression "(param_2 != __src)" ( (binary_expression "param_2 != __src" identifier != identifier) )) (compound_statement "{\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }" { (expression_statement "memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);" (call_expression "memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2)" identifier (argument_list "((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2)" ( (cast_expression "(void *)((long)puVar9 - ((long)__src - (long)param_2))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 - ((long)__src - (long)param_2))" ( (binary_expression "(long)puVar9 - ((long)__src - (long)param_2)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((long)__src - (long)param_2)" ( (binary_expression "(long)__src - (long)param_2" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) , identifier , (binary_expression "(long)__src - (long)param_2" (cast_expression "(long)__src" ( (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 "puVar9 = param_2 + param_3;" (assignment_expression "puVar9 = param_2 + param_3" identifier = (binary_expression "param_2 + param_3" identifier + identifier)) ;) (if_statement "if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }" if (parenthesized_expression "(param_2 != puVar9)" ( (binary_expression "param_2 != puVar9" identifier != identifier) )) (compound_statement "{\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }" { (do_statement "do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);" do (compound_statement "{\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        }" { (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) ;) })) }) (else_clause "else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" else (compound_statement "{\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" { (expression_statement "lVar8 = param_3 - ((long)sVar5 >> 2);" (assignment_expression "lVar8 = param_3 - ((long)sVar5 >> 2)" identifier = (binary_expression "param_3 - ((long)sVar5 >> 2)" identifier - (parenthesized_expression "((long)sVar5 >> 2)" ( (binary_expression "(long)sVar5 >> 2" (cast_expression "(long)sVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar2 = puVar9;" (assignment_expression "puVar2 = puVar9" identifier = identifier) ;) (if_statement "if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }" { (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);" do (compound_statement "{\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        }" { (expression_statement "puVar9[lVar3] = uVar1;" (assignment_expression "puVar9[lVar3] = uVar1" (subscript_expression "puVar9[lVar3]" identifier [ identifier ]) = identifier) ;) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != lVar3)" ( (binary_expression "lVar8 != lVar3" identifier != identifier) )) ;) (expression_statement "puVar2 = puVar9 + lVar8;" (assignment_expression "puVar2 = puVar9 + lVar8" identifier = (binary_expression "puVar9 + lVar8" identifier + identifier)) ;) })) (expression_statement "param_1[1] = puVar2;" (assignment_expression "param_1[1] = puVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }" if (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) (compound_statement "{\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }" { (expression_statement "memmove(puVar2,param_2,sVar5);" (call_expression "memmove(puVar2,param_2,sVar5)" identifier (argument_list "(puVar2,param_2,sVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1[1] = param_1[1] + sVar5;" (assignment_expression "param_1[1] = param_1[1] + sVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + sVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) (do_statement "do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);" do (compound_statement "{\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        }" { (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "param_1[1] = sVar5 + (long)puVar2;" (assignment_expression "param_1[1] = sVar5 + (long)puVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "sVar5 + (long)puVar2" identifier + (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = (long)puVar9 - (long)puVar2 >> 2;" (assignment_expression "uVar6 = (long)puVar9 - (long)puVar2 >> 2" identifier = (binary_expression "(long)puVar9 - (long)puVar2 >> 2" (binary_expression "(long)puVar9 - (long)puVar2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }" if (parenthesized_expression "(0x3fffffffffffffff - uVar6 < param_3)" ( (binary_expression "0x3fffffffffffffff - uVar6 < param_3" (binary_expression "0x3fffffffffffffff - uVar6" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }" { (expression_statement "FUN_004dcc70("vector::_M_fill_insert");" (call_expression "FUN_004dcc70("vector::_M_fill_insert")" identifier (argument_list "("vector::_M_fill_insert")" ( (string_literal ""vector::_M_fill_insert"" " string_content ") ))) ;) })) (expression_statement "uVar4 = uVar6;" (assignment_expression "uVar4 = uVar6" identifier = identifier) ;) (if_statement "if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }" if (parenthesized_expression "(uVar6 <= param_3)" ( (binary_expression "uVar6 <= param_3" identifier <= identifier) )) (compound_statement "{\n    uVar4 = param_3;\n  }" { (expression_statement "uVar4 = param_3;" (assignment_expression "uVar4 = param_3" identifier = identifier) ;) })) (expression_statement "uVar7 = uVar6 + uVar4;" (assignment_expression "uVar7 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "sVar5 = (long)param_2 - (long)puVar2;" (assignment_expression "sVar5 = (long)param_2 - (long)puVar2" identifier = (binary_expression "(long)param_2 - (long)puVar2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" if (parenthesized_expression "((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7))" ( (binary_expression "(CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)" (parenthesized_expression "(CARRY8(uVar6,uVar4))" ( (call_expression "CARRY8(uVar6,uVar4)" identifier (argument_list "(uVar6,uVar4)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x3fffffffffffffff < uVar7)" ( (binary_expression "0x3fffffffffffffff < uVar7" number_literal < identifier) ))) )) (compound_statement "{\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }" { (expression_statement "lVar8 = -4;" (assignment_expression "lVar8 = -4" identifier = number_literal) ;) (labeled_statement "LAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);" statement_identifier : (expression_statement "__dest = (void *)FUN_0049cb70(lVar8);" (assignment_expression "__dest = (void *)FUN_0049cb70(lVar8)" identifier = (cast_expression "(void *)FUN_0049cb70(lVar8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))))) ;)) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar9 = (undefined4 *)param_1[1];" (assignment_expression "puVar9 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "lVar8 = lVar8 + (long)__dest;" (assignment_expression "lVar8 = lVar8 + (long)__dest" identifier = (binary_expression "lVar8 + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "__n = (long)param_2 - (long)puVar2;" (assignment_expression "__n = (long)param_2 - (long)puVar2" identifier = (binary_expression "(long)param_2 - (long)puVar2" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }) (else_clause "else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" else (compound_statement "{\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" { (if_statement "if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }" { (expression_statement "lVar8 = uVar7 * 4;" (assignment_expression "lVar8 = uVar7 * 4" identifier = (binary_expression "uVar7 * 4" identifier * number_literal)) ;) (goto_statement "goto LAB_00229b07;" goto statement_identifier ;) })) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__n = sVar5;" (assignment_expression "__n = sVar5" identifier = identifier) ;) }))) (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);" do (compound_statement "{\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  }" { (expression_statement "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;" (assignment_expression "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1" (pointer_expression "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5)" * (cast_expression "(undefined4 *)((long)__dest + uVar6 * 4 + sVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + uVar6 * 4 + sVar5)" ( (binary_expression "(long)__dest + uVar6 * 4 + sVar5" (binary_expression "(long)__dest + uVar6 * 4" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar6 * 4" identifier * number_literal)) + identifier) )))) = identifier) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != uVar6)" ( (binary_expression "param_3 != uVar6" identifier != identifier) )) ;) (expression_statement "__dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);" (assignment_expression "__dest_00 = (void *)(__n + param_3 * 4 + (long)__dest)" identifier = (cast_expression "(void *)(__n + param_3 * 4 + (long)__dest)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__n + param_3 * 4 + (long)__dest)" ( (binary_expression "__n + param_3 * 4 + (long)__dest" (binary_expression "__n + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" if (parenthesized_expression "(param_2 == puVar2)" ( (binary_expression "param_2 == puVar2" identifier == identifier) )) (compound_statement "{\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }" { (if_statement "if (puVar9 != param_2) goto LAB_00229b7f;" if (parenthesized_expression "(puVar9 != param_2)" ( (binary_expression "puVar9 != param_2" identifier != identifier) )) (goto_statement "goto LAB_00229b7f;" goto statement_identifier ;)) (labeled_statement "LAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;" statement_identifier : (if_statement "if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229ba4;" goto statement_identifier ;))) }) (else_clause "else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" else (compound_statement "{\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" { (expression_statement "__dest = memmove(__dest,puVar2,__n);" (assignment_expression "__dest = memmove(__dest,puVar2,__n)" identifier = (call_expression "memmove(__dest,puVar2,__n)" identifier (argument_list "(__dest,puVar2,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }" if (parenthesized_expression "(param_2 != puVar9)" ( (binary_expression "param_2 != puVar9" identifier != identifier) )) (compound_statement "{\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }" { (labeled_statement "LAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);" statement_identifier : (expression_statement "memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);" (call_expression "memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2)" identifier (argument_list "(__dest_00,param_2,(long)puVar9 - (long)param_2)" ( identifier , identifier , (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" ( (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_00229b9f;" goto statement_identifier ;) })) }))) (expression_statement "FUN_0049e340(puVar2);" (call_expression "FUN_0049e340(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (labeled_statement "LAB_00229ba4:\n  *param_1 = __dest;" statement_identifier : (expression_statement "*param_1 = __dest;" (assignment_expression "*param_1 = __dest" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);" (assignment_expression "param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest_00 + ((long)puVar9 - (long)param_2)" (cast_expression "(long)__dest_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)puVar9 - (long)param_2)" ( (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" ( (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 IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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)) ))) ))) , 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 IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) }))) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT , IDENT ))) )) || (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (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)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (assignment_expression IDENT = (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_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00229960(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)" (identifier "FUN_00229960") (parameter_list "(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  long lVar3;\n  ulong uVar4;\n  void *__dest;\n  size_t sVar5;\n  undefined4 *__src;\n  size_t __n;\n  ulong uVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 *puVar9;\n  void *__dest_00;\n  \n  if (param_3 == 0) {\n    return;\n  }\n  puVar9 = (undefined4 *)param_1[1];\n  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }\n  puVar2 = (undefined4 *)*param_1;\n  uVar6 = (long)puVar9 - (long)puVar2 >> 2;\n  if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }\n  uVar4 = uVar6;\n  if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }\n  uVar7 = uVar6 + uVar4;\n  sVar5 = (long)param_2 - (long)puVar2;\n  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }\n  uVar1 = *param_4;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);\n  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);\n  if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }\n  FUN_0049e340(puVar2);\nLAB_00229ba4:\n  *param_1 = __dest;\n  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);\n  param_1[2] = lVar8;\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "undefined4 *__src;" (type_identifier "undefined4") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "void *__dest_00;" (primitive_type "void") (pointer_declarator "*__dest_00" (* "*") (identifier "__dest_00")) (; ";")) (if_statement "if (param_3 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar9 = (undefined4 *)param_1[1];" (assignment_expression "puVar9 = (undefined4 *)param_1[1]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2))" (( "(") (binary_expression "param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)" (identifier "param_3") (<= "<=") (call_expression "(ulong)(param_1[2] - (long)puVar9 >> 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[2] - (long)puVar9 >> 2)" (( "(") (binary_expression "param_1[2] - (long)puVar9 >> 2" (binary_expression "param_1[2] - (long)puVar9" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9"))) (>> ">>") (number_literal "2")) () ")")))) () ")")) (compound_statement "{\n    uVar1 = *param_4;\n    sVar5 = (long)puVar9 - (long)param_2;\n    if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }\n    return;\n  }" ({ "{") (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" (identifier "uVar1") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "sVar5 = (long)puVar9 - (long)param_2;" (assignment_expression "sVar5 = (long)puVar9 - (long)param_2" (identifier "sVar5") (= "=") (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")))) (; ";")) (if_statement "if (param_3 < (ulong)((long)sVar5 >> 2)) {\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }\n    else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" (if "if") (parenthesized_expression "(param_3 < (ulong)((long)sVar5 >> 2))" (( "(") (binary_expression "param_3 < (ulong)((long)sVar5 >> 2)" (identifier "param_3") (< "<") (call_expression "(ulong)((long)sVar5 >> 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((long)sVar5 >> 2)" (( "(") (binary_expression "(long)sVar5 >> 2" (cast_expression "(long)sVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "sVar5")) (>> ">>") (number_literal "2")) () ")")))) () ")")) (compound_statement "{\n      __src = puVar9 + -param_3;\n      puVar2 = puVar9;\n      if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = puVar2 + param_3;\n      if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }\n      puVar9 = param_2 + param_3;\n      if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }\n    }" ({ "{") (expression_statement "__src = puVar9 + -param_3;" (assignment_expression "__src = puVar9 + -param_3" (identifier "__src") (= "=") (binary_expression "puVar9 + -param_3" (identifier "puVar9") (+ "+") (unary_expression "-param_3" (- "-") (identifier "param_3")))) (; ";")) (expression_statement "puVar2 = puVar9;" (assignment_expression "puVar2 = puVar9" (identifier "puVar2") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar9 != __src) {\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }" (if "if") (parenthesized_expression "(puVar9 != __src)" (( "(") (binary_expression "puVar9 != __src" (identifier "puVar9") (!= "!=") (identifier "__src")) () ")")) (compound_statement "{\n        memmove(puVar9,__src,param_3 * 4);\n        puVar2 = (undefined4 *)param_1[1];\n      }" ({ "{") (expression_statement "memmove(puVar9,__src,param_3 * 4);" (call_expression "memmove(puVar9,__src,param_3 * 4)" (identifier "memmove") (argument_list "(puVar9,__src,param_3 * 4)" (( "(") (identifier "puVar9") (, ",") (identifier "__src") (, ",") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4")) () ")"))) (; ";")) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "param_1[1] = puVar2 + param_3;" (assignment_expression "param_1[1] = puVar2 + param_3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2 + param_3" (identifier "puVar2") (+ "+") (identifier "param_3"))) (; ";")) (if_statement "if (param_2 != __src) {\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }" (if "if") (parenthesized_expression "(param_2 != __src)" (( "(") (binary_expression "param_2 != __src" (identifier "param_2") (!= "!=") (identifier "__src")) () ")")) (compound_statement "{\n        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);\n      }" ({ "{") (expression_statement "memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2);" (call_expression "memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2)" (identifier "memmove") (argument_list "((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,\n                (long)__src - (long)param_2)" (( "(") (cast_expression "(void *)((long)puVar9 - ((long)__src - (long)param_2))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 - ((long)__src - (long)param_2))" (( "(") (binary_expression "(long)puVar9 - ((long)__src - (long)param_2)" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (- "-") (parenthesized_expression "((long)__src - (long)param_2)" (( "(") (binary_expression "(long)__src - (long)param_2" (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))) () ")"))) (, ",") (identifier "param_2") (, ",") (binary_expression "(long)__src - (long)param_2" (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar9 = param_2 + param_3;" (assignment_expression "puVar9 = param_2 + param_3" (identifier "puVar9") (= "=") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3"))) (; ";")) (if_statement "if (param_2 != puVar9) {\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }" (if "if") (parenthesized_expression "(param_2 != puVar9)" (( "(") (binary_expression "param_2 != puVar9" (identifier "param_2") (!= "!=") (identifier "puVar9")) () ")")) (compound_statement "{\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n      }" ({ "{") (do_statement "do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);" (do "do") (compound_statement "{\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        }" ({ "{") (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != param_2)" (( "(") (binary_expression "puVar9 != param_2" (identifier "puVar9") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" (else "else") (compound_statement "{\n      lVar8 = param_3 - ((long)sVar5 >> 2);\n      puVar2 = puVar9;\n      if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }\n      param_1[1] = puVar2;\n      if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }\n      param_1[1] = sVar5 + (long)puVar2;\n    }" ({ "{") (expression_statement "lVar8 = param_3 - ((long)sVar5 >> 2);" (assignment_expression "lVar8 = param_3 - ((long)sVar5 >> 2)" (identifier "lVar8") (= "=") (binary_expression "param_3 - ((long)sVar5 >> 2)" (identifier "param_3") (- "-") (parenthesized_expression "((long)sVar5 >> 2)" (( "(") (binary_expression "(long)sVar5 >> 2" (cast_expression "(long)sVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "sVar5")) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (expression_statement "puVar2 = puVar9;" (assignment_expression "puVar2 = puVar9" (identifier "puVar2") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (lVar8 != 0) {\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar3 = 0;\n        do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);\n        puVar2 = puVar9 + lVar8;\n      }" ({ "{") (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" (identifier "lVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        } while (lVar8 != lVar3);" (do "do") (compound_statement "{\n          puVar9[lVar3] = uVar1;\n          lVar3 = lVar3 + 1;\n        }" ({ "{") (expression_statement "puVar9[lVar3] = uVar1;" (assignment_expression "puVar9[lVar3] = uVar1" (subscript_expression "puVar9[lVar3]" (identifier "puVar9") ([ "[") (identifier "lVar3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + 1" (identifier "lVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar8 != lVar3)" (( "(") (binary_expression "lVar8 != lVar3" (identifier "lVar8") (!= "!=") (identifier "lVar3")) () ")")) (; ";")) (expression_statement "puVar2 = puVar9 + lVar8;" (assignment_expression "puVar2 = puVar9 + lVar8" (identifier "puVar2") (= "=") (binary_expression "puVar9 + lVar8" (identifier "puVar9") (+ "+") (identifier "lVar8"))) (; ";")) (} "}"))) (expression_statement "param_1[1] = puVar2;" (assignment_expression "param_1[1] = puVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (if_statement "if (puVar9 != param_2) {\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }" (if "if") (parenthesized_expression "(puVar9 != param_2)" (( "(") (binary_expression "puVar9 != param_2" (identifier "puVar9") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n        memmove(puVar2,param_2,sVar5);\n        param_1[1] = param_1[1] + sVar5;\n        do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);\n        return;\n      }" ({ "{") (expression_statement "memmove(puVar2,param_2,sVar5);" (call_expression "memmove(puVar2,param_2,sVar5)" (identifier "memmove") (argument_list "(puVar2,param_2,sVar5)" (( "(") (identifier "puVar2") (, ",") (identifier "param_2") (, ",") (identifier "sVar5") () ")"))) (; ";")) (expression_statement "param_1[1] = param_1[1] + sVar5;" (assignment_expression "param_1[1] = param_1[1] + sVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1[1] + sVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "sVar5"))) (; ";")) (do_statement "do {\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        } while (puVar9 != param_2);" (do "do") (compound_statement "{\n          *param_2 = uVar1;\n          param_2 = param_2 + 1;\n        }" ({ "{") (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != param_2)" (( "(") (binary_expression "puVar9 != param_2" (identifier "puVar9") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "param_1[1] = sVar5 + (long)puVar2;" (assignment_expression "param_1[1] = sVar5 + (long)puVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "sVar5 + (long)puVar2" (identifier "sVar5") (+ "+") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar6 = (long)puVar9 - (long)puVar2 >> 2;" (assignment_expression "uVar6 = (long)puVar9 - (long)puVar2 >> 2" (identifier "uVar6") (= "=") (binary_expression "(long)puVar9 - (long)puVar2 >> 2" (binary_expression "(long)puVar9 - (long)puVar2" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (- "-") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (0x3fffffffffffffff - uVar6 < param_3) {\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }" (if "if") (parenthesized_expression "(0x3fffffffffffffff - uVar6 < param_3)" (( "(") (binary_expression "0x3fffffffffffffff - uVar6 < param_3" (binary_expression "0x3fffffffffffffff - uVar6" (number_literal "0x3fffffffffffffff") (- "-") (identifier "uVar6")) (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n                    \n    FUN_004dcc70("vector::_M_fill_insert");\n  }" ({ "{") (expression_statement "FUN_004dcc70("vector::_M_fill_insert");" (call_expression "FUN_004dcc70("vector::_M_fill_insert")" (identifier "FUN_004dcc70") (argument_list "("vector::_M_fill_insert")" (( "(") (string_literal ""vector::_M_fill_insert"" (" """) (string_content "vector::_M_fill_insert") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar6;" (assignment_expression "uVar4 = uVar6" (identifier "uVar4") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (uVar6 <= param_3) {\n    uVar4 = param_3;\n  }" (if "if") (parenthesized_expression "(uVar6 <= param_3)" (( "(") (binary_expression "uVar6 <= param_3" (identifier "uVar6") (<= "<=") (identifier "param_3")) () ")")) (compound_statement "{\n    uVar4 = param_3;\n  }" ({ "{") (expression_statement "uVar4 = param_3;" (assignment_expression "uVar4 = param_3" (identifier "uVar4") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar6 + uVar4;" (assignment_expression "uVar7 = uVar6 + uVar4" (identifier "uVar7") (= "=") (binary_expression "uVar6 + uVar4" (identifier "uVar6") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "sVar5 = (long)param_2 - (long)puVar2;" (assignment_expression "sVar5 = (long)param_2 - (long)puVar2" (identifier "sVar5") (= "=") (binary_expression "(long)param_2 - (long)puVar2" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")))) (; ";")) (if_statement "if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }\n  else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" (if "if") (parenthesized_expression "((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7))" (( "(") (binary_expression "(CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)" (parenthesized_expression "(CARRY8(uVar6,uVar4))" (( "(") (call_expression "CARRY8(uVar6,uVar4)" (identifier "CARRY8") (argument_list "(uVar6,uVar4)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar4") () ")"))) () ")")) (|| "||") (parenthesized_expression "(0x3fffffffffffffff < uVar7)" (( "(") (binary_expression "0x3fffffffffffffff < uVar7" (number_literal "0x3fffffffffffffff") (< "<") (identifier "uVar7")) () ")"))) () ")")) (compound_statement "{\n    lVar8 = -4;\nLAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);\n    puVar2 = (undefined4 *)*param_1;\n    puVar9 = (undefined4 *)param_1[1];\n    lVar8 = lVar8 + (long)__dest;\n    __n = (long)param_2 - (long)puVar2;\n  }" ({ "{") (expression_statement "lVar8 = -4;" (assignment_expression "lVar8 = -4" (identifier "lVar8") (= "=") (number_literal "-4")) (; ";")) (labeled_statement "LAB_00229b07:\n    __dest = (void *)FUN_0049cb70(lVar8);" (statement_identifier "LAB_00229b07") (: ":") (expression_statement "__dest = (void *)FUN_0049cb70(lVar8);" (assignment_expression "__dest = (void *)FUN_0049cb70(lVar8)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_0049cb70(lVar8)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(lVar8)" (identifier "FUN_0049cb70") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))))) (; ";"))) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "puVar9 = (undefined4 *)param_1[1];" (assignment_expression "puVar9 = (undefined4 *)param_1[1]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "lVar8 = lVar8 + (long)__dest;" (assignment_expression "lVar8 = lVar8 + (long)__dest" (identifier "lVar8") (= "=") (binary_expression "lVar8 + (long)__dest" (identifier "lVar8") (+ "+") (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")))) (; ";")) (expression_statement "__n = (long)param_2 - (long)puVar2;" (assignment_expression "__n = (long)param_2 - (long)puVar2" (identifier "__n") (= "=") (binary_expression "(long)param_2 - (long)puVar2" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")))) (; ";")) (} "}")) (else_clause "else {\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" (else "else") (compound_statement "{\n    if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }\n    lVar8 = 0;\n    __dest = (void *)0x0;\n    __n = sVar5;\n  }" ({ "{") (if_statement "if (uVar7 != 0) {\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar8 = uVar7 * 4;\n      goto LAB_00229b07;\n    }" ({ "{") (expression_statement "lVar8 = uVar7 * 4;" (assignment_expression "lVar8 = uVar7 * 4" (identifier "lVar8") (= "=") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) (; ";")) (goto_statement "goto LAB_00229b07;" (goto "goto") (statement_identifier "LAB_00229b07") (; ";")) (} "}"))) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" (identifier "__dest") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__n = sVar5;" (assignment_expression "__n = sVar5" (identifier "__n") (= "=") (identifier "sVar5")) (; ";")) (} "}")))) (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" (identifier "uVar1") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  } while (param_3 != uVar6);" (do "do") (compound_statement "{\n    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;\n    uVar6 = uVar6 + 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;" (assignment_expression "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1" (pointer_expression "*(undefined4 *)((long)__dest + uVar6 * 4 + sVar5)" (* "*") (cast_expression "(undefined4 *)((long)__dest + uVar6 * 4 + sVar5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + uVar6 * 4 + sVar5)" (( "(") (binary_expression "(long)__dest + uVar6 * 4 + sVar5" (binary_expression "(long)__dest + uVar6 * 4" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) (+ "+") (identifier "sVar5")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != uVar6)" (( "(") (binary_expression "param_3 != uVar6" (identifier "param_3") (!= "!=") (identifier "uVar6")) () ")")) (; ";")) (expression_statement "__dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);" (assignment_expression "__dest_00 = (void *)(__n + param_3 * 4 + (long)__dest)" (identifier "__dest_00") (= "=") (cast_expression "(void *)(__n + param_3 * 4 + (long)__dest)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__n + param_3 * 4 + (long)__dest)" (( "(") (binary_expression "__n + param_3 * 4 + (long)__dest" (binary_expression "__n + param_3 * 4" (identifier "__n") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) (+ "+") (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest"))) () ")")))) (; ";")) (if_statement "if (param_2 == puVar2) {\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }\n  else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == puVar2)" (( "(") (binary_expression "param_2 == puVar2" (identifier "param_2") (== "==") (identifier "puVar2")) () ")")) (compound_statement "{\n    if (puVar9 != param_2) goto LAB_00229b7f;\nLAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;\n  }" ({ "{") (if_statement "if (puVar9 != param_2) goto LAB_00229b7f;" (if "if") (parenthesized_expression "(puVar9 != param_2)" (( "(") (binary_expression "puVar9 != param_2" (identifier "puVar9") (!= "!=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_00229b7f;" (goto "goto") (statement_identifier "LAB_00229b7f") (; ";"))) (labeled_statement "LAB_00229b9f:\n    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;" (statement_identifier "LAB_00229b9f") (: ":") (if_statement "if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;" (if "if") (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined4 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00229ba4;" (goto "goto") (statement_identifier "LAB_00229ba4") (; ";")))) (} "}")) (else_clause "else {\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" (else "else") (compound_statement "{\n    __dest = memmove(__dest,puVar2,__n);\n    if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }\n  }" ({ "{") (expression_statement "__dest = memmove(__dest,puVar2,__n);" (assignment_expression "__dest = memmove(__dest,puVar2,__n)" (identifier "__dest") (= "=") (call_expression "memmove(__dest,puVar2,__n)" (identifier "memmove") (argument_list "(__dest,puVar2,__n)" (( "(") (identifier "__dest") (, ",") (identifier "puVar2") (, ",") (identifier "__n") () ")")))) (; ";")) (if_statement "if (param_2 != puVar9) {\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }" (if "if") (parenthesized_expression "(param_2 != puVar9)" (( "(") (binary_expression "param_2 != puVar9" (identifier "param_2") (!= "!=") (identifier "puVar9")) () ")")) (compound_statement "{\nLAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);\n      goto LAB_00229b9f;\n    }" ({ "{") (labeled_statement "LAB_00229b7f:\n      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);" (statement_identifier "LAB_00229b7f") (: ":") (expression_statement "memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);" (call_expression "memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2)" (identifier "memcpy") (argument_list "(__dest_00,param_2,(long)puVar9 - (long)param_2)" (( "(") (identifier "__dest_00") (, ",") (identifier "param_2") (, ",") (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))) (; ";"))) (goto_statement "goto LAB_00229b9f;" (goto "goto") (statement_identifier "LAB_00229b9f") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0049e340(puVar2);" (call_expression "FUN_0049e340(puVar2)" (identifier "FUN_0049e340") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (labeled_statement "LAB_00229ba4:\n  *param_1 = __dest;" (statement_identifier "LAB_00229ba4") (: ":") (expression_statement "*param_1 = __dest;" (assignment_expression "*param_1 = __dest" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "__dest")) (; ";"))) (expression_statement "param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);" (assignment_expression "param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2)" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(long)__dest_00 + ((long)puVar9 - (long)param_2)" (cast_expression "(long)__dest_00" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest_00")) (+ "+") (parenthesized_expression "((long)puVar9 - (long)param_2)" (( "(") (binary_expression "(long)puVar9 - (long)param_2" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (- "-") (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 prototype: void _M_fill_insert(vector<unsigned_int,_std::allocator<unsigned_int>_>
   * this, iterator __position, size_type __n, value_type.conflict2 * __x) */

void __thiscall
std::vector<var_3,_std::var_2<var_3>var_4>::_M_fill_insert
          (vector<var_3,_std::var_2<var_3>var_4> *this,iterator __position,
          type_3 var_1,type_1 *__x)

{
  type_4 *ppuVar1;
  type_1 vVar2;
  type_1 *var_9;
  long var_11;
  type_2 var_15;
  type_3 var_19;
  type_4 __dest;
  size_t var_12;
  type_1 *var_7;
  type_5 *var_21;
  size_t var_20;
  type_2 var_13;
  type_2 var_17;
  type_4 puVar10;
  long var_10;
  type_1 *var_6;
  void *__dest_00;
  
  if (var_1 == 0) {
    return;
  }
  var_6 = (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl.
            _M_finish;
  if (var_1 <= (type_2)((long)(this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5).
                           _M_impl._M_end_of_storage - (long)var_6 >> 2)) {
    vVar2 = *__x;
    var_12 = (long)var_6 - (long)__position._M_current;
    if (var_1 < (type_2)((long)var_12 >> 2)) {
      var_7 = var_6 + -var_1;
      var_9 = var_6;
      if (var_6 != var_7) {
        var_8(var_6,var_7,var_1 * 4);
        var_9 = (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl.
                 _M_finish;
      }
      (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl._M_finish =
           var_9 + var_1;
      if (__position._M_current != var_7) {
        var_8((void *)((long)var_6 - ((long)var_7 - (long)__position._M_current)),
                __position._M_current,(long)var_7 - (long)__position._M_current);
      }
      var_6 = __position._M_current + var_1;
      if (__position._M_current != var_6) {
        do {
          *__position._M_current = vVar2;
          __position._M_current = __position._M_current + 1;
        } while (var_6 != __position._M_current);
      }
    }
    else {
      var_10 = var_1 - ((long)var_12 >> 2);
      var_9 = var_6;
      if (var_10 != 0) {
        var_11 = 0;
        do {
          var_6[var_11] = vVar2;
          var_11 = var_11 + 1;
        } while (var_10 != var_11);
        var_9 = var_6 + var_10;
      }
      (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl._M_finish =
           var_9;
      if (var_6 != __position._M_current) {
        var_8(var_9,__position._M_current,var_12);
        ppuVar1 = &(this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl.
                   _M_finish;
        *ppuVar1 = (type_4)((long)*ppuVar1 + var_12);
        do {
          *__position._M_current = vVar2;
          __position._M_current = __position._M_current + 1;
        } while (var_6 != __position._M_current);
        return;
      }
      (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl._M_finish =
           (type_4)(var_12 + (long)var_9);
    }
    return;
  }
  var_21 = (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl.
             _M_start;
  var_13 = (long)var_6 - (long)var_21 >> 2;
  if (0x3fffffffffffffff - var_13 < var_1) {
                    /* WARNING: Subroutine does not return */
    var_14("vector::_M_fill_insert");
  }
  var_15 = var_13;
  if (var_13 <= var_1) {
    var_15 = var_1;
  }
  var_17 = var_13 + var_15;
  var_12 = (long)__position._M_current - (long)var_21;
  if ((var_16(var_13,var_15)) || (0x3fffffffffffffff < var_17)) {
    var_17 = 0xfffffffffffffffc;
LAB_00229b07:
    __dest = (type_4)var_18(var_17);
    var_21 = (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl.
               _M_start;
    var_6 = (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl.
              _M_finish;
    puVar10 = (type_4)(var_17 + (long)__dest);
    var_20 = (long)__position._M_current - (long)var_21;
  }
  else {
    if (var_17 != 0) {
      var_17 = var_17 * 4;
      goto LAB_00229b07;
    }
    puVar10 = (type_4)0x0;
    __dest = (type_4)0x0;
    var_20 = var_12;
  }
  vVar2 = *__x;
  var_19 = 0;
  do {
    *(type_1 *)((long)__dest + var_19 * 4 + var_12) = vVar2;
    var_19 = var_19 + 1;
  } while (var_1 != var_19);
  __dest_00 = (void *)(var_20 + var_1 * 4 + (long)__dest);
  if (__position._M_current == var_21) {
    if (var_6 != __position._M_current) goto LAB_00229b7f;
LAB_00229b9f:
    if (var_21 == (type_5 *)0x0) goto LAB_00229ba4;
  }
  else {
    __dest = (type_4)var_8(__dest,var_21,var_20);
    if (__position._M_current != var_6) {
LAB_00229b7f:
      var_22(__dest_00,__position._M_current,(long)var_6 - (long)__position._M_current);
      goto LAB_00229b9f;
    }
  }
  var_23(var_21);
LAB_00229ba4:
  (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl._M_start = __dest;
  (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl._M_finish =
       (type_4)((long)__dest_00 + ((long)var_6 - (long)__position._M_current));
  (this->super__Vector_base<var_3,_std::var_2<var_3>var_4>var_5)._M_impl._M_end_of_storage
       = puVar10;
  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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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))))))) (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (return_statement))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (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: (binary_expression left: (number_literal) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (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: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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,undefined4 *param_2,ulong param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  long lVar3;
  ulong uVar4;
  void *__dest;
  size_t sVar5;
  undefined4 *__src;
  size_t __n;
  ulong uVar6;
  ulong uVar7;
  long lVar8;
  undefined4 *puVar9;
  void *__dest_00;
  
  if (param_3 == 0) {
    return;
  }
  puVar9 = (undefined4 *)param_1[1];
  if (param_3 <= (ulong)(param_1[2] - (long)puVar9 >> 2)) {
    uVar1 = *param_4;
    sVar5 = (long)puVar9 - (long)param_2;
    if (param_3 < (ulong)((long)sVar5 >> 2)) {
      __src = puVar9 + -param_3;
      puVar2 = puVar9;
      if (puVar9 != __src) {
        memmove(puVar9,__src,param_3 * 4);
        puVar2 = (undefined4 *)param_1[1];
      }
      param_1[1] = puVar2 + param_3;
      if (param_2 != __src) {
        memmove((void *)((long)puVar9 - ((long)__src - (long)param_2)),param_2,
                (long)__src - (long)param_2);
      }
      puVar9 = param_2 + param_3;
      if (param_2 != puVar9) {
        do {
          *param_2 = uVar1;
          param_2 = param_2 + 1;
        } while (puVar9 != param_2);
      }
    }
    else {
      lVar8 = param_3 - ((long)sVar5 >> 2);
      puVar2 = puVar9;
      if (lVar8 != 0) {
        lVar3 = 0;
        do {
          puVar9[lVar3] = uVar1;
          lVar3 = lVar3 + 1;
        } while (lVar8 != lVar3);
        puVar2 = puVar9 + lVar8;
      }
      param_1[1] = puVar2;
      if (puVar9 != param_2) {
        memmove(puVar2,param_2,sVar5);
        param_1[1] = param_1[1] + sVar5;
        do {
          *param_2 = uVar1;
          param_2 = param_2 + 1;
        } while (puVar9 != param_2);
        return;
      }
      param_1[1] = sVar5 + (long)puVar2;
    }
    return;
  }
  puVar2 = (undefined4 *)*param_1;
  uVar6 = (long)puVar9 - (long)puVar2 >> 2;
  if (0x3fffffffffffffff - uVar6 < param_3) {
                    /* WARNING: Subroutine does not return */
    FUN_004dcc70("vector::_M_fill_insert");
  }
  uVar4 = uVar6;
  if (uVar6 <= param_3) {
    uVar4 = param_3;
  }
  uVar7 = uVar6 + uVar4;
  sVar5 = (long)param_2 - (long)puVar2;
  if ((CARRY8(uVar6,uVar4)) || (0x3fffffffffffffff < uVar7)) {
    lVar8 = -4;
LAB_00229b07:
    __dest = (void *)FUN_0049cb70(lVar8);
    puVar2 = (undefined4 *)*param_1;
    puVar9 = (undefined4 *)param_1[1];
    lVar8 = lVar8 + (long)__dest;
    __n = (long)param_2 - (long)puVar2;
  }
  else {
    if (uVar7 != 0) {
      lVar8 = uVar7 * 4;
      goto LAB_00229b07;
    }
    lVar8 = 0;
    __dest = (void *)0x0;
    __n = sVar5;
  }
  uVar1 = *param_4;
  uVar6 = 0;
  do {
    *(undefined4 *)((long)__dest + uVar6 * 4 + sVar5) = uVar1;
    uVar6 = uVar6 + 1;
  } while (param_3 != uVar6);
  __dest_00 = (void *)(__n + param_3 * 4 + (long)__dest);
  if (param_2 == puVar2) {
    if (puVar9 != param_2) goto LAB_00229b7f;
LAB_00229b9f:
    if (puVar2 == (undefined4 *)0x0) goto LAB_00229ba4;
  }
  else {
    __dest = memmove(__dest,puVar2,__n);
    if (param_2 != puVar9) {
LAB_00229b7f:
      memcpy(__dest_00,param_2,(long)puVar9 - (long)param_2);
      goto LAB_00229b9f;
    }
  }
  FUN_0049e340(puVar2);
LAB_00229ba4:
  *param_1 = __dest;
  param_1[1] = (long)__dest_00 + ((long)puVar9 - (long)param_2);
  param_1[2] = lVar8;
  return;
}

