int FUN_0041a9b0(int *param_1,void *param_2,size_t param_3,int param_4)

{
  int iVar1;
  int iVar2;
  
  if ((param_4 < 0) || (param_1[1] < param_4)) {
    iVar1 = 1;
  }
  else {
    if ((param_2 == (void *)0x0) || (param_3 == 0)) {
      return 0;
    }
    iVar1 = FUN_0041a8a8(param_1,param_3 + param_1[1])   //possible issue identified - semgrep
    if (iVar1 == 0) {
      memmove((void *)(*param_1 + param_4 + param_3),(void *)(*param_1 + param_4),
              param_1[1] - param_4)   //possible issue identified - semgrep
      memcpy((void *)(*param_1 + param_4),param_2,param_3)   //possible issue identified - semgrep
      iVar2 = param_1[1];
      param_1[1] = param_3 + iVar2;
      *(undefined1 *)(*param_1 + param_3 + iVar2) = 0;
    }
  }
  return iVar1;
}