void FUN_00473830(uint *param_1,undefined4 *param_2)

{
  char *pcVar1;
  code *UNRECOVERED_JUMPTABLE;
  
  switch(*param_2) {
  case 3:
    param_2 = (undefined4 *)param_2[1];
    goto LAB_004739b0;
  default:
    goto LAB_004739b0;
  case 0x16:
  case 0x19:
    pcVar1 = " restrict";
    break;
  case 0x17:
  case 0x1a:
    pcVar1 = " volatile";
    break;
  case 0x18:
  case 0x1b:
    pcVar1 = " const";
    break;
  case 0x1c:
    FUN_004736cc(param_1,0x20);
    param_2 = (undefined4 *)param_2[2];
LAB_004739b0:
    FUN_004739e0(param_1,param_2);
    return;
  case 0x1d:
    pcVar1 = (char *)0x2a;
    if ((*param_1 & 4) != 0) {
      return;
    }
    goto LAB_00473918;
  case 0x1e:
    pcVar1 = (char *)0x26;
LAB_00473918:
    UNRECOVERED_JUMPTABLE = FUN_004736cc;
    goto LAB_004738b4;
  case 0x1f:
    pcVar1 = "&&";
    break;
  case 0x20:
    pcVar1 = "complex ";
    break;
  case 0x21:
    pcVar1 = "imaginary ";
    break;
  case 0x26:
    if ((char)param_1[0x42] != '(') {
      FUN_004736cc(param_1,0x20);
    }
    FUN_004739e0(param_1,param_2[1]);
    pcVar1 = "::*";
  }
  UNRECOVERED_JUMPTABLE = FUN_004737d0;
LAB_004738b4:
                    /* WARNING: Could not recover jumptable at 0x004738c0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)(param_1,pcVar1);
  return;
}