undefined4 * FUN_00473000(int param_1,undefined4 param_2,int param_3,int param_4)

{
  undefined4 *puVar1;
  int iVar2;
  
  switch(param_2) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 10:
  case 0x1c:
  case 0x26:
  case 0x2c:
  case 0x2d:
  case 0x2e:
  case 0x2f:
  case 0x30:
  case 0x31:
  case 0x32:
  case 0x33:
  case 0x35:
    if (param_3 == 0) {
      return (undefined4 *)0x0;
    }
  case 0x25:
    if (param_4 == 0) {
      return (undefined4 *)0x0;
    }
    break;
  default:
    return (undefined4 *)0x0;
  case 8:
  case 9:
  case 0xb:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x1d:
  case 0x1e:
  case 0x1f:
  case 0x20:
  case 0x21:
  case 0x23:
  case 0x27:
  case 0x28:
  case 0x2b:
  case 0x34:
    if (param_3 == 0) {
      return (undefined4 *)0x0;
    }
    break;
  case 0x16:
  case 0x17:
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
  case 0x24:
    break;
  }
  iVar2 = *(int *)(param_1 + 0x14);
  puVar1 = (undefined4 *)0x0;
  if (iVar2 < *(int *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar2 * 0xc);
    *(int *)(param_1 + 0x14) = iVar2 + 1;
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = param_2;
      puVar1[1] = param_3;
      puVar1[2] = param_4;
      return puVar1;
    }
  }
  return puVar1;
}