undefined4 * FUN_00476e1c(int param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 *puVar3;
  int *piVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  char *pcVar9;
  undefined4 uVar10;
  code *UNRECOVERED_JUMPTABLE;
  
  pcVar9 = *(char **)(param_1 + 0xc);
  cVar1 = *pcVar9;
  if (cVar1 == 'L') {
    UNRECOVERED_JUMPTABLE = FUN_00476c3c;
LAB_00476e84:
                    /* WARNING: Could not recover jumptable at 0x00476e9c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    puVar3 = (undefined4 *)(*UNRECOVERED_JUMPTABLE)();
    return puVar3;
  }
  if (cVar1 == 'T') {
    UNRECOVERED_JUMPTABLE = FUN_00473368;
    goto LAB_00476e84;
  }
  if ((cVar1 == 's') && (pcVar9[1] == 'r')) {
    *(char **)(param_1 + 0xc) = pcVar9 + 2;
    piVar4 = (int *)FUN_004754f4();
    piVar5 = (int *)FUN_00475f2c(param_1);
    if (**(char **)(param_1 + 0xc) == 'I') {
      uVar10 = FUN_004771ac(param_1);
      piVar5 = (int *)FUN_00473000(param_1,4,piVar5,uVar10);
    }
    uVar10 = 1;
  }
  else {
    piVar4 = (int *)FUN_00475d0c(param_1);
    if (piVar4 == (int *)0x0) {
      return (undefined4 *)0x0;
    }
    iVar8 = *piVar4;
    if (iVar8 == 0x29) {
      uVar10 = *(undefined4 *)piVar4[1];
      *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + ((undefined4 *)piVar4[1])[2] + -2;
      iVar8 = FUN_00483d20(uVar10,"st");
      if (iVar8 != 0) {
LAB_00477010:
        iVar8 = *(int *)(piVar4[1] + 0xc);
        goto LAB_0047702c;
      }
      UNRECOVERED_JUMPTABLE = FUN_004754f4;
LAB_00477050:
      piVar5 = (int *)(*UNRECOVERED_JUMPTABLE)(param_1);
      uVar10 = 0x2c;
    }
    else {
      if (iVar8 == 0x2a) {
        iVar8 = piVar4[1];
      }
      else {
        if (iVar8 != 0x2b) {
          if (iVar8 != 0x29) {
            return (undefined4 *)0x0;
          }
          goto LAB_00477010;
        }
        iVar8 = 1;
      }
LAB_0047702c:
      if (iVar8 == 2) {
        uVar10 = FUN_00476e1c(param_1);
        uVar6 = FUN_00476e1c(param_1);
        piVar5 = (int *)FUN_00473000(param_1,0x2e,uVar10,uVar6);
        uVar10 = 0x2d;
      }
      else {
        if (iVar8 != 3) {
          if (iVar8 != 1) {
            return (undefined4 *)0x0;
          }
          UNRECOVERED_JUMPTABLE = FUN_00476e1c;
          goto LAB_00477050;
        }
        uVar10 = FUN_00476e1c(param_1);
        uVar6 = FUN_00476e1c(param_1);
        uVar7 = FUN_00476e1c(param_1);
        uVar6 = FUN_00473000(param_1,0x31,uVar6,uVar7);
        piVar5 = (int *)FUN_00473000(param_1,0x30,uVar10,uVar6);
        uVar10 = 0x2f;
      }
    }
  }
  switch(uVar10) {
  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 (piVar4 == (int *)0x0) {
      return (undefined4 *)0x0;
    }
  case 0x25:
    piVar2 = piVar5;
    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:
    piVar2 = piVar4;
    break;
  case 0x16:
  case 0x17:
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
  case 0x24:
    goto switchD_0047303c_caseD_16;
  }
  puVar3 = (undefined4 *)0x0;
  if (piVar2 != (int *)0x0) {
switchD_0047303c_caseD_16:
    iVar8 = *(int *)(param_1 + 0x14);
    puVar3 = (undefined4 *)0x0;
    if (iVar8 < *(int *)(param_1 + 0x18)) {
      puVar3 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar8 * 0xc);
      *(int *)(param_1 + 0x14) = iVar8 + 1;
      if (puVar3 != (undefined4 *)0x0) {
        *puVar3 = uVar10;
        puVar3[1] = piVar4;
        puVar3[2] = piVar5;
        return puVar3;
      }
    }
  }
  return puVar3;
}