void FUN_00418e08(int param_1,void *param_2,uint param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  int iVar10;
  undefined4 *puVar11;
  
  uVar3 = *(uint *)(param_1 + 0x10);
  *(uint *)(param_1 + 0x10) = param_3 + uVar3;
  if (param_3 + uVar3 < uVar3) {
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
  }
  uVar3 = 0x40 - (uVar3 & 0x3f);
  puVar11 = (undefined4 *)(param_1 + 0x18);
  if (param_3 < uVar3) {
    puVar11 = (undefined4 *)(param_1 + (0x58 - uVar3));
  }
  else {
    memcpy((void *)((int)puVar11 + (0x40 - uVar3)),param_2,uVar3)   //possible issue identified - semgrep
    iVar8 = 0x10;
    puVar7 = puVar11;
    do {
      iVar8 = iVar8 + -1;
      *puVar7 = *puVar7;
      puVar7 = puVar7 + 1;
    } while (iVar8 != 0);
    param_3 = param_3 - uVar3;
    FUN_00418160(param_1,puVar11);
    param_2 = (void *)((int)param_2 + uVar3);
    if (0x3f < param_3) {
      iVar10 = 0;
      iVar8 = 0;
      do {
        puVar6 = (undefined4 *)((int)param_2 + iVar8);
        puVar9 = puVar6 + 0x10;
        puVar7 = puVar11;
        do {
          uVar1 = *puVar6;
          uVar2 = puVar6[1];
          uVar4 = puVar6[2];
          uVar5 = puVar6[3];
          puVar6 = puVar6 + 4;
          *puVar7 = uVar1;
          puVar7[1] = uVar2;
          puVar7[2] = uVar4;
          puVar7[3] = uVar5;
          puVar7 = puVar7 + 4;
        } while (puVar6 != puVar9);
        iVar8 = 0x10;
        puVar7 = puVar11;
        do {
          iVar8 = iVar8 + -1;
          *puVar7 = *puVar7;
          puVar7 = puVar7 + 1;
        } while (iVar8 != 0);
        iVar10 = iVar10 + -0x40;
        FUN_00418160(param_1,puVar11);
        iVar8 = -iVar10;
      } while (0x3f < iVar10 + param_3);
      param_2 = (void *)((int)param_2 + ((param_3 - 0x40 >> 6) + 1) * 0x40);
      param_3 = param_3 - 0x40 & 0x3f;
    }
  }
  (*(code *)(undefined *)0x0)(puVar11,param_2,param_3);
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  (*(code *)(undefined *)0x0)();
  FUN_004024d0();
  return;
}