int FUN_0045c090(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = *param_1;
  if (iVar2 < param_2) {
    if (param_1[2] < param_2) {
      iVar3 = ((param_2 + 3) / 3) * 4;
      if (param_1[1] == 0) {
        iVar1 = FUN_0043a36c(iVar3,"buffer.c",0x93);
      }
      else {
        iVar1 = FUN_0043a870(param_1[1],param_1[2],iVar3,"buffer.c",0x95);
      }
      if (iVar1 == 0) {
        FUN_00433604(7,0x69,0x41,"buffer.c",0x98);
        return 0;
      }
      iVar2 = *param_1;
      param_1[2] = iVar3;
      param_1[1] = iVar1;
      iVar1 = iVar1 + iVar2;
    }
    else {
      iVar1 = param_1[1] + iVar2;
    }
    iVar2 = param_2 - iVar2;
  }
  else {
    iVar1 = param_1[1] + param_2;
    iVar2 = iVar2 - param_2;
  }
  FUN_00483cc0(iVar1,0,iVar2);
  *param_1 = param_2;
  return param_2;
}