undefined4 FUN_0041a8a8(undefined4 *param_1,uint param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  
  if (param_2 < (uint)param_1[1]) {
    uVar4 = param_2 + param_1[3];
    if (param_1[2] - param_2 <= (uint)param_1[3]) {
      return 0;
    }
  }
  else {
    uVar3 = param_1[2];
    uVar4 = param_2 - param_1[1];
    if (param_2 <= uVar3) {
      return 0;
    }
    if (uVar4 < (uint)param_1[3]) {
      uVar4 = param_1[3] + uVar3;
    }
    else {
      uVar4 = uVar4 + uVar3;
    }
  }
  pvVar1 = realloc((void *)*param_1,uVar4 + 1)   //possible issue identified - semgrep
  if ((pvVar1 == (void *)0x0) &&
     (pvVar1 = realloc((void *)*param_1,param_2 + 1), uVar4 = param_2, pvVar1 == (void *)0x0)) {   //possible issue identified - semgrep
    uVar2 = 0x66;
  }
  else {
    *param_1 = pvVar1;
    param_1[2] = uVar4;
    uVar2 = 0;
  }
  return uVar2;
}