void FUN_000187f4(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined1 auStack_30 [16];
  
  iVar1 = FUN_00018778();
  if (*(char *)(iVar1 + 0x58) == '\0') {
    iVar2 = *(int *)(iVar1 + 0x54);
    if (iVar2 == 0) {
      *(undefined1 **)(iVar1 + 0x54) = auStack_30;
    }
    (**(code **)(&DAT_00031820 + param_1 * 4))(param_1,param_2,param_3);
    if (iVar2 == 0) {
      *(undefined4 *)(iVar1 + 0x54) = 0;
    }
  }
  else {
    *(int *)(iVar1 + 0x20) = param_1;
    *(undefined1 *)(iVar1 + 0x58) = 0;
  }
  return;
}