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;
}