undefined4 FUN_00489bec(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = param_1[4];
  *param_1 = 0xffffffff;
  param_1[4] = iVar1 + -1;
  if (iVar1 + -1 < 0) {
LAB_00489c48:
    uVar2 = 0xffffffff;
    *(byte *)((int)param_1 + 0x15) = *(byte *)((int)param_1 + 0x15) | 2;
  }
  else {
    if (*(char *)((int)param_1 + 0x15) == '\0') {
      iVar1 = FUN_00483560(param_1[2]);
      if (iVar1 == -1) goto LAB_00489c48;
      param_1[1] = iVar1;
    }
    else {
      *(undefined1 *)((int)param_1 + 0x15) = 0;
    }
    uVar2 = param_1[1];
    param_1[3] = param_1[3] + 1;
    *param_1 = uVar2;
  }
  return uVar2;
}