undefined4 * FUN_00437d7c(undefined4 *param_1,int *param_2,int param_3)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  
  if (((param_1 == (undefined4 *)0x0) ||
      (puVar2 = (undefined4 *)*param_1, puVar2 == (undefined4 *)0x0)) || ((puVar2[5] & 1) == 0)) {
    puVar2 = (undefined4 *)FUN_0043a36c(0x18,"a_object.c",0x10c);
    if (puVar2 == (undefined4 *)0x0) {
      FUN_00433604(0xd,0x7b,0x41,"a_object.c",0x10f);
      return (undefined4 *)0x0;
    }
    puVar2[5] = 1;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[2] = 0;
    *puVar2 = 0;
    puVar2[1] = 0;
  }
  iVar1 = puVar2[4];
  iVar3 = *param_2;
  if (iVar1 != 0) {
    if (param_3 <= (int)puVar2[3]) goto LAB_00437e40;
    FUN_0043a484();
  }
  iVar1 = param_3;
  if (param_3 == 0) {
    iVar1 = 1;
  }
  iVar1 = FUN_0043a36c(iVar1,"a_object.c",0xf2);
  puVar2[5] = puVar2[5] | 8;
  puVar2[4] = iVar1;
  if (iVar1 == 0) {
    FUN_00433604(0xd,0xc4,0x41,"a_object.c",0x102);
    if ((param_1 != (undefined4 *)0x0) && ((undefined4 *)*param_1 == puVar2)) {
      return (undefined4 *)0x0;
    }
    FUN_004376e0(puVar2);
    return (undefined4 *)0x0;
  }
LAB_00437e40:
  FUN_00483c90(iVar1,iVar3,param_3);
  puVar2[3] = param_3;
  *puVar2 = 0;
  puVar2[1] = 0;
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = puVar2;
  }
  *param_2 = iVar3 + param_3;
  return puVar2;
}