
/* WARNING: Unknown calling convention */

wchar_t printf_fetchargs(__va_list_tag *args,arguments *a)

{
  uint uVar1;
  argument *paVar2;
  ulong uVar3;
  longdouble *plVar4;
  char *pcVar5;
  undefined1 *puVar6;
  undefined4 *puVar7;
  wchar_t *pwVar8;
  long *plVar9;
  
  paVar2 = a->arg;
  if (a->count != 0) {
    uVar3 = 0;
    do {
      switch(paVar2->type) {
      default:
        return L'\xffffffff';
      case TYPE_SCHAR:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          puVar7 = (undefined4 *)args->overflow_arg_area;
          args->overflow_arg_area = puVar7 + 2;
        }
        (paVar2->a).a_schar = (char)*puVar7;
        break;
      case TYPE_UCHAR:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          puVar7 = (undefined4 *)args->overflow_arg_area;
          args->overflow_arg_area = puVar7 + 2;
        }
        (paVar2->a).a_schar = (char)*puVar7;
        break;
      case TYPE_SHORT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          puVar7 = (undefined4 *)args->overflow_arg_area;
          args->overflow_arg_area = puVar7 + 2;
        }
        (paVar2->a).a_short = (short)*puVar7;
        break;
      case TYPE_USHORT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          puVar7 = (undefined4 *)args->overflow_arg_area;
          args->overflow_arg_area = puVar7 + 2;
        }
        (paVar2->a).a_short = (short)*puVar7;
        break;
      case TYPE_INT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          pwVar8 = (wchar_t *)args->overflow_arg_area;
          args->overflow_arg_area = pwVar8 + 2;
        }
        (paVar2->a).a_int = *pwVar8;
        break;
      case TYPE_UINT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          pwVar8 = (wchar_t *)args->overflow_arg_area;
          args->overflow_arg_area = pwVar8 + 2;
        }
        (paVar2->a).a_int = *pwVar8;
        break;
      case TYPE_LONGINT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_ULONGINT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_LONGLONGINT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_ULONGLONGINT:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_DOUBLE:
        uVar1 = args->fp_offset;
        if (uVar1 < 0xb0) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->fp_offset = uVar1 + 0x10;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_LONGDOUBLE:
        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);
        args->overflow_arg_area = plVar4 + 1;
        (paVar2->a).a_longdouble = *plVar4;
        break;
      case TYPE_CHAR:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          pwVar8 = (wchar_t *)args->overflow_arg_area;
          args->overflow_arg_area = pwVar8 + 2;
        }
        (paVar2->a).a_int = *pwVar8;
        break;
      case TYPE_WIDE_CHAR:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          pwVar8 = (wchar_t *)args->overflow_arg_area;
          args->overflow_arg_area = pwVar8 + 2;
        }
        (paVar2->a).a_int = *pwVar8;
        break;
      case TYPE_STRING:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        pcVar5 = (char *)*plVar9;
        if (pcVar5 == (char *)0x0) {
          pcVar5 = "(NULL)";
        }
        (paVar2->a).a_longint = (long)pcVar5;
        break;
      case TYPE_WIDE_STRING:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        puVar6 = (undefined1 *)*plVar9;
        if (puVar6 == (undefined1 *)0x0) {
          puVar6 = wide_null_string_2845;
        }
        (paVar2->a).a_longint = (long)puVar6;
        break;
      case TYPE_POINTER:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_COUNT_SCHAR_POINTER:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_COUNT_SHORT_POINTER:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_COUNT_INT_POINTER:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_COUNT_LONGINT_POINTER:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
        break;
      case TYPE_COUNT_LONGLONGINT_POINTER:
        uVar1 = args->gp_offset;
        if (uVar1 < 0x30) {
          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);
          args->gp_offset = uVar1 + 8;
        }
        else {
          plVar9 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = plVar9 + 1;
        }
        (paVar2->a).a_longint = *plVar9;
      }
      uVar3 = uVar3 + 1;
      paVar2 = paVar2 + 1;
    } while (uVar3 < a->count);
    return L'\0';
  }
  return L'\0';
}



undefined8 FUN_00147cc9(uint *param_1,ulong *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  ulong uVar3;
  unkbyte10 *pVar4;
  char *pcVar5;
  undefined *puVar6;
  undefined4 *puVar7;
  long *plVar8;
  undefined8 *puVar9;
  
  puVar2 = (undefined4 *)param_2[1];
  if (*param_2 != 0) {
    uVar3 = 0;
    do {
      switch(*puVar2) {
      default:
        return 0xffffffff;
      case 1:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(char *)(puVar2 + 4) = (char)*puVar7;
        break;
      case 2:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(char *)(puVar2 + 4) = (char)*puVar7;
        break;
      case 3:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(short *)(puVar2 + 4) = (short)*puVar7;
        break;
      case 4:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(short *)(puVar2 + 4) = (short)*puVar7;
        break;
      case 5:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 6:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 7:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 8:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 9:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 10:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0xb:
        uVar1 = param_1[1];
        if (uVar1 < 0xb0) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          param_1[1] = uVar1 + 0x10;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0xc:
        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);
        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;
        *(unkbyte10 *)(puVar2 + 4) = *pVar4;
        break;
      case 0xd:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 0xe:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 0xf:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          plVar8 = *(long **)(param_1 + 2);
          *(long **)(param_1 + 2) = plVar8 + 1;
        }
        pcVar5 = (char *)*plVar8;
        if (pcVar5 == (char *)0x0) {
          pcVar5 = "(NULL)";
        }
        *(char **)(puVar2 + 4) = pcVar5;
        break;
      case 0x10:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        puVar6 = (undefined *)*puVar9;
        if (puVar6 == (undefined *)0x0) {
          puVar6 = &DAT_001550a0;
        }
        *(undefined **)(puVar2 + 4) = puVar6;
        break;
      case 0x11:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x12:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x13:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x14:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x15:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x16:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
      }
      uVar3 = uVar3 + 1;
      puVar2 = puVar2 + 8;
    } while (uVar3 < *param_2);
    return 0;
  }
  return 0;
}


MOV RAX,qword ptr [RSI + 0x8]
CMP qword ptr [RSI],0x0
JZ 0x001480f2
MOV ECX,0x0
LEA R8,[0x155040]
LEA R10,[0x1550a0]
LEA R9,[0x155038]
JMP 0x00147d1d
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147d31
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV byte ptr [RAX + 0x10],DL
ADD RCX,0x1
ADD RAX,0x20
CMP qword ptr [RSI],RCX
JBE 0x001480ec
CMP dword ptr [RAX],0x16
JA 0x001480f8
MOV EDX,dword ptr [RAX]
MOVSXD RDX,dword ptr [R8 + RDX*0x4]
ADD RDX,R8
JMP RDX
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147d06
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147d5a
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV byte ptr [RAX + 0x10],DL
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147d52
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147d84
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV word ptr [RAX + 0x10],DX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147d7b
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147db1
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV word ptr [RAX + 0x10],DX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147da5
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147ddd
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV dword ptr [RAX + 0x10],EDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147dd2
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147e09
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV dword ptr [RAX + 0x10],EDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147dfe
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147e36
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147e2a
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147e63
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147e57
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147e90
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147e84
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147ebd
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147eb1
MOV EDX,dword ptr [RDI + 0x4]
CMP EDX,0xaf
JA 0x00147ef2
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x10
MOV dword ptr [RDI + 0x4],EDX
MOVSD XMM0,qword ptr [R11]
MOVSD qword ptr [RAX + 0x10],XMM0
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147ee3
MOV RDX,qword ptr [RDI + 0x8]
ADD RDX,0xf
AND RDX,-0x10
LEA R11,[RDX + 0x10]
MOV qword ptr [RDI + 0x8],R11
FLD tword ptr [RDX]
FSTP tword ptr [RAX + 0x10]
JMP 0x00147d0c
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147f3c
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV dword ptr [RAX + 0x10],EDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147f31
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147f68
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV EDX,dword ptr [R11]
MOV dword ptr [RAX + 0x10],EDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147f5d
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147f9c
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
TEST RDX,RDX
CMOVZ RDX,R9
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147f89
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147fd0
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
TEST RDX,RDX
CMOVZ RDX,R10
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147fbd
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00147ffd
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00147ff1
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x0014802a
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x0014801e
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00148057
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x0014804b
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x00148084
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x00148078
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x001480b1
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x001480a5
MOV EDX,dword ptr [RDI]
CMP EDX,0x2f
JA 0x001480de
MOV R11D,EDX
ADD R11,qword ptr [RDI + 0x10]
ADD EDX,0x8
MOV dword ptr [RDI],EDX
MOV RDX,qword ptr [R11]
MOV qword ptr [RAX + 0x10],RDX
JMP 0x00147d0c
MOV R11,qword ptr [RDI + 0x8]
LEA RDX,[R11 + 0x8]
MOV qword ptr [RDI + 0x8],RDX
JMP 0x001480d2
MOV EAX,0x0
RET
MOV EAX,0x0
RET
MOV EAX,0xffffffff
RET
(translation_unit "undefined8 FUN_00147cc9(uint *param_1,ulong *param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_00147cc9(uint *param_1,ulong *param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00147cc9(uint *param_1,ulong *param_2)" identifier (parameter_list "(uint *param_1,ulong *param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "unkbyte10 *pVar4;" type_identifier (pointer_declarator "*pVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)param_2[1];" (assignment_expression "puVar2 = (undefined4 *)param_2[1]" identifier = (cast_expression "(undefined4 *)param_2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }" if (parenthesized_expression "(*param_2 != 0)" ( (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);" do (compound_statement "{\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    }" { (switch_statement "switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }" switch (parenthesized_expression "(*puVar2)" ( (pointer_expression "*puVar2" * identifier) )) (compound_statement "{\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }" { (case_statement "default:\n        return 0xffffffff;" default : (return_statement "return 0xffffffff;" return number_literal ;)) (case_statement "case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(char *)(puVar2 + 4) = (char)*puVar7;" (assignment_expression "*(char *)(puVar2 + 4) = (char)*puVar7" (pointer_expression "*(char *)(puVar2 + 4)" * (cast_expression "(char *)(puVar2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(char)*puVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(char *)(puVar2 + 4) = (char)*puVar7;" (assignment_expression "*(char *)(puVar2 + 4) = (char)*puVar7" (pointer_expression "*(char *)(puVar2 + 4)" * (cast_expression "(char *)(puVar2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(char)*puVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(short *)(puVar2 + 4) = (short)*puVar7;" (assignment_expression "*(short *)(puVar2 + 4) = (short)*puVar7" (pointer_expression "*(short *)(puVar2 + 4)" * (cast_expression "(short *)(puVar2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(short)*puVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(short *)(puVar2 + 4) = (short)*puVar7;" (assignment_expression "*(short *)(puVar2 + 4) = (short)*puVar7" (pointer_expression "*(short *)(puVar2 + 4)" * (cast_expression "(short *)(puVar2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(short)*puVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0xb0)" ( (binary_expression "uVar1 < 0xb0" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "param_1[1] = uVar1 + 0x10;" (assignment_expression "param_1[1] = uVar1 + 0x10" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar1 + 0x10" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;" case number_literal : (expression_statement "pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);" (assignment_expression "pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" identifier = (cast_expression "(unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" ( (binary_expression "*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0" (binary_expression "*(long *)(param_1 + 2) + 0xfU" (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) + number_literal) & number_literal) )))) ;) (expression_statement "*(unkbyte10 **)(param_1 + 2) = pVar4 + 1;" (assignment_expression "*(unkbyte10 **)(param_1 + 2) = pVar4 + 1" (pointer_expression "*(unkbyte10 **)(param_1 + 2)" * (cast_expression "(unkbyte10 **)(param_1 + 2)" ( (type_descriptor "unkbyte10 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "pVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(unkbyte10 *)(puVar2 + 4) = *pVar4;" (assignment_expression "*(unkbyte10 *)(puVar2 + 4) = *pVar4" (pointer_expression "*(unkbyte10 *)(puVar2 + 4)" * (cast_expression "(unkbyte10 *)(puVar2 + 4)" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*pVar4" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(long *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" else (compound_statement "{\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" { (expression_statement "plVar8 = *(long **)(param_1 + 2);" (assignment_expression "plVar8 = *(long **)(param_1 + 2)" identifier = (pointer_expression "*(long **)(param_1 + 2)" * (cast_expression "(long **)(param_1 + 2)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long **)(param_1 + 2) = plVar8 + 1;" (assignment_expression "*(long **)(param_1 + 2) = plVar8 + 1" (pointer_expression "*(long **)(param_1 + 2)" * (cast_expression "(long **)(param_1 + 2)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "plVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "pcVar5 = (char *)*plVar8;" (assignment_expression "pcVar5 = (char *)*plVar8" identifier = (cast_expression "(char *)*plVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar5 = "(NULL)";\n        }" { (expression_statement "pcVar5 = "(NULL)";" (assignment_expression "pcVar5 = "(NULL)"" identifier = (string_literal ""(NULL)"" " string_content ")) ;) })) (expression_statement "*(char **)(puVar2 + 4) = pcVar5;" (assignment_expression "*(char **)(puVar2 + 4) = pcVar5" (pointer_expression "*(char **)(puVar2 + 4)" * (cast_expression "(char **)(puVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar6 = (undefined *)*puVar9;" (assignment_expression "puVar6 = (undefined *)*puVar9" identifier = (cast_expression "(undefined *)*puVar9" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }" if (parenthesized_expression "(puVar6 == (undefined *)0x0)" ( (binary_expression "puVar6 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar6 = &DAT_001550a0;\n        }" { (expression_statement "puVar6 = &DAT_001550a0;" (assignment_expression "puVar6 = &DAT_001550a0" identifier = (pointer_expression "&DAT_001550a0" & identifier)) ;) })) (expression_statement "*(undefined **)(puVar2 + 4) = puVar6;" (assignment_expression "*(undefined **)(puVar2 + 4) = puVar6" (pointer_expression "*(undefined **)(puVar2 + 4)" * (cast_expression "(undefined **)(puVar2 + 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;)) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 8;" (assignment_expression "puVar2 = puVar2 + 8" identifier = (binary_expression "puVar2 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < *param_2)" ( (binary_expression "uVar3 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nwchar_t printf_fetchargs(__va_list_tag *args,arguments *a)\n\n{\n  uint uVar1;\n  argument *paVar2;\n  ulong uVar3;\n  longdouble *plVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  wchar_t *pwVar8;\n  long *plVar9;\n  \n  paVar2 = a->arg;\n  if (a->count != 0) {\n    uVar3 = 0;\n    do {\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    } while (uVar3 < a->count);\n    return L'\0';\n  }\n  return L'\0';\n}\n\n" comment (function_definition "wchar_t printf_fetchargs(__va_list_tag *args,arguments *a)\n\n{\n  uint uVar1;\n  argument *paVar2;\n  ulong uVar3;\n  longdouble *plVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  wchar_t *pwVar8;\n  long *plVar9;\n  \n  paVar2 = a->arg;\n  if (a->count != 0) {\n    uVar3 = 0;\n    do {\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    } while (uVar3 < a->count);\n    return L'\0';\n  }\n  return L'\0';\n}" type_identifier (function_declarator "printf_fetchargs(__va_list_tag *args,arguments *a)" identifier (parameter_list "(__va_list_tag *args,arguments *a)" ( (parameter_declaration "__va_list_tag *args" type_identifier (pointer_declarator "*args" * identifier)) , (parameter_declaration "arguments *a" type_identifier (pointer_declarator "*a" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  argument *paVar2;\n  ulong uVar3;\n  longdouble *plVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  wchar_t *pwVar8;\n  long *plVar9;\n  \n  paVar2 = a->arg;\n  if (a->count != 0) {\n    uVar3 = 0;\n    do {\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    } while (uVar3 < a->count);\n    return L'\0';\n  }\n  return L'\0';\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "argument *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "longdouble *plVar4;" type_identifier (pointer_declarator "*plVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "wchar_t *pwVar8;" type_identifier (pointer_declarator "*pwVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (expression_statement "paVar2 = a->arg;" (assignment_expression "paVar2 = a->arg" identifier = (field_expression "a->arg" identifier -> field_identifier)) ;) (if_statement "if (a->count != 0) {\n    uVar3 = 0;\n    do {\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    } while (uVar3 < a->count);\n    return L'\0';\n  }" if (parenthesized_expression "(a->count != 0)" ( (binary_expression "a->count != 0" (field_expression "a->count" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    uVar3 = 0;\n    do {\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    } while (uVar3 < a->count);\n    return L'\0';\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    } while (uVar3 < a->count);" do (compound_statement "{\n      switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }\n      uVar3 = uVar3 + 1;\n      paVar2 = paVar2 + 1;\n    }" { (switch_statement "switch(paVar2->type) {\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }" switch (parenthesized_expression "(paVar2->type)" ( (field_expression "paVar2->type" identifier -> field_identifier) )) (compound_statement "{\n      default:\n        return L'\xffffffff';\n      case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;\n      case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;\n      case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;\n      case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;\n      case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;\n      case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;\n      case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;\n      case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n      }" { (case_statement "default:\n        return L'\xffffffff';" default : (return_statement "return L'\xffffffff';" return (char_literal "L'\xffffffff'" L' escape_sequence character character character character ') ;)) (case_statement "case TYPE_SCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" { (expression_statement "puVar7 = (undefined4 *)args->overflow_arg_area;" (assignment_expression "puVar7 = (undefined4 *)args->overflow_arg_area" identifier = (cast_expression "(undefined4 *)args->overflow_arg_area" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = puVar7 + 2;" (assignment_expression "args->overflow_arg_area = puVar7 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_schar = (char)*puVar7;" (assignment_expression "(paVar2->a).a_schar = (char)*puVar7" (field_expression "(paVar2->a).a_schar" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char)*puVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_UCHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_schar = (char)*puVar7;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" { (expression_statement "puVar7 = (undefined4 *)args->overflow_arg_area;" (assignment_expression "puVar7 = (undefined4 *)args->overflow_arg_area" identifier = (cast_expression "(undefined4 *)args->overflow_arg_area" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = puVar7 + 2;" (assignment_expression "args->overflow_arg_area = puVar7 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_schar = (char)*puVar7;" (assignment_expression "(paVar2->a).a_schar = (char)*puVar7" (field_expression "(paVar2->a).a_schar" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char)*puVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_SHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" { (expression_statement "puVar7 = (undefined4 *)args->overflow_arg_area;" (assignment_expression "puVar7 = (undefined4 *)args->overflow_arg_area" identifier = (cast_expression "(undefined4 *)args->overflow_arg_area" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = puVar7 + 2;" (assignment_expression "args->overflow_arg_area = puVar7 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_short = (short)*puVar7;" (assignment_expression "(paVar2->a).a_short = (short)*puVar7" (field_expression "(paVar2->a).a_short" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(short)*puVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_USHORT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }\n        (paVar2->a).a_short = (short)*puVar7;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = (undefined4 *)args->overflow_arg_area;\n          args->overflow_arg_area = puVar7 + 2;\n        }" { (expression_statement "puVar7 = (undefined4 *)args->overflow_arg_area;" (assignment_expression "puVar7 = (undefined4 *)args->overflow_arg_area" identifier = (cast_expression "(undefined4 *)args->overflow_arg_area" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = puVar7 + 2;" (assignment_expression "args->overflow_arg_area = puVar7 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_short = (short)*puVar7;" (assignment_expression "(paVar2->a).a_short = (short)*puVar7" (field_expression "(paVar2->a).a_short" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(short)*puVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_INT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" else (compound_statement "{\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" { (expression_statement "pwVar8 = (wchar_t *)args->overflow_arg_area;" (assignment_expression "pwVar8 = (wchar_t *)args->overflow_arg_area" identifier = (cast_expression "(wchar_t *)args->overflow_arg_area" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = pwVar8 + 2;" (assignment_expression "args->overflow_arg_area = pwVar8 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "pwVar8 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_int = *pwVar8;" (assignment_expression "(paVar2->a).a_int = *pwVar8" (field_expression "(paVar2->a).a_int" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*pwVar8" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_UINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" else (compound_statement "{\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" { (expression_statement "pwVar8 = (wchar_t *)args->overflow_arg_area;" (assignment_expression "pwVar8 = (wchar_t *)args->overflow_arg_area" identifier = (cast_expression "(wchar_t *)args->overflow_arg_area" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = pwVar8 + 2;" (assignment_expression "args->overflow_arg_area = pwVar8 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "pwVar8 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_int = *pwVar8;" (assignment_expression "(paVar2->a).a_int = *pwVar8" (field_expression "(paVar2->a).a_int" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*pwVar8" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_LONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_ULONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_LONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_ULONGLONGINT:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_DOUBLE:\n        uVar1 = args->fp_offset;\n        if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->fp_offset;" (assignment_expression "uVar1 = args->fp_offset" identifier = (field_expression "args->fp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0xb0) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0xb0)" ( (binary_expression "uVar1 < 0xb0" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->fp_offset = uVar1 + 0x10;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->fp_offset = uVar1 + 0x10;" (assignment_expression "args->fp_offset = uVar1 + 0x10" (field_expression "args->fp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 0x10" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_LONGDOUBLE:\n        plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);\n        args->overflow_arg_area = plVar4 + 1;\n        (paVar2->a).a_longdouble = *plVar4;\n        break;" case identifier : (expression_statement "plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);" (assignment_expression "plVar4 = (longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0)" identifier = (cast_expression "(longdouble *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0)" ( (type_descriptor "longdouble *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0)" ( (binary_expression "(long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0" (binary_expression "(long)args->overflow_arg_area + 0xfU" (cast_expression "(long)args->overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier)) + number_literal) & number_literal) )))) ;) (expression_statement "args->overflow_arg_area = plVar4 + 1;" (assignment_expression "args->overflow_arg_area = plVar4 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar4 + 1" identifier + number_literal)) ;) (expression_statement "(paVar2->a).a_longdouble = *plVar4;" (assignment_expression "(paVar2->a).a_longdouble = *plVar4" (field_expression "(paVar2->a).a_longdouble" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar4" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" else (compound_statement "{\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" { (expression_statement "pwVar8 = (wchar_t *)args->overflow_arg_area;" (assignment_expression "pwVar8 = (wchar_t *)args->overflow_arg_area" identifier = (cast_expression "(wchar_t *)args->overflow_arg_area" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = pwVar8 + 2;" (assignment_expression "args->overflow_arg_area = pwVar8 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "pwVar8 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_int = *pwVar8;" (assignment_expression "(paVar2->a).a_int = *pwVar8" (field_expression "(paVar2->a).a_int" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*pwVar8" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_WIDE_CHAR:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }\n        (paVar2->a).a_int = *pwVar8;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "pwVar8 = (wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(wchar_t *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" else (compound_statement "{\n          pwVar8 = (wchar_t *)args->overflow_arg_area;\n          args->overflow_arg_area = pwVar8 + 2;\n        }" { (expression_statement "pwVar8 = (wchar_t *)args->overflow_arg_area;" (assignment_expression "pwVar8 = (wchar_t *)args->overflow_arg_area" identifier = (cast_expression "(wchar_t *)args->overflow_arg_area" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = pwVar8 + 2;" (assignment_expression "args->overflow_arg_area = pwVar8 + 2" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "pwVar8 + 2" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_int = *pwVar8;" (assignment_expression "(paVar2->a).a_int = *pwVar8" (field_expression "(paVar2->a).a_int" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*pwVar8" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        pcVar5 = (char *)*plVar9;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        (paVar2->a).a_longint = (long)pcVar5;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "pcVar5 = (char *)*plVar9;" (assignment_expression "pcVar5 = (char *)*plVar9" identifier = (cast_expression "(char *)*plVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar5 = "(NULL)";\n        }" { (expression_statement "pcVar5 = "(NULL)";" (assignment_expression "pcVar5 = "(NULL)"" identifier = (string_literal ""(NULL)"" " string_content ")) ;) })) (expression_statement "(paVar2->a).a_longint = (long)pcVar5;" (assignment_expression "(paVar2->a).a_longint = (long)pcVar5" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(long)pcVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_WIDE_STRING:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        puVar6 = (undefined1 *)*plVar9;\n        if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }\n        (paVar2->a).a_longint = (long)puVar6;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar6 = (undefined1 *)*plVar9;" (assignment_expression "puVar6 = (undefined1 *)*plVar9" identifier = (cast_expression "(undefined1 *)*plVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if (puVar6 == (undefined1 *)0x0) {\n          puVar6 = wide_null_string_2845;\n        }" if (parenthesized_expression "(puVar6 == (undefined1 *)0x0)" ( (binary_expression "puVar6 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar6 = wide_null_string_2845;\n        }" { (expression_statement "puVar6 = wide_null_string_2845;" (assignment_expression "puVar6 = wide_null_string_2845" identifier = identifier) ;) })) (expression_statement "(paVar2->a).a_longint = (long)puVar6;" (assignment_expression "(paVar2->a).a_longint = (long)puVar6" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_COUNT_SCHAR_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_COUNT_SHORT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_COUNT_INT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_COUNT_LONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;\n        break;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case TYPE_COUNT_LONGLONGINT_POINTER:\n        uVar1 = args->gp_offset;\n        if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }\n        (paVar2->a).a_longint = *plVar9;" case identifier : (expression_statement "uVar1 = args->gp_offset;" (assignment_expression "uVar1 = args->gp_offset" identifier = (field_expression "args->gp_offset" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }\n        else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);\n          args->gp_offset = uVar1 + 8;\n        }" { (expression_statement "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area);" (assignment_expression "plVar9 = (long *)((ulong)uVar1 + (long)args->reg_save_area)" identifier = (cast_expression "(long *)((ulong)uVar1 + (long)args->reg_save_area)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + (long)args->reg_save_area)" ( (binary_expression "(ulong)uVar1 + (long)args->reg_save_area" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (cast_expression "(long)args->reg_save_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args->reg_save_area" identifier -> field_identifier))) )))) ;) (expression_statement "args->gp_offset = uVar1 + 8;" (assignment_expression "args->gp_offset = uVar1 + 8" (field_expression "args->gp_offset" identifier -> field_identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" else (compound_statement "{\n          plVar9 = (long *)args->overflow_arg_area;\n          args->overflow_arg_area = plVar9 + 1;\n        }" { (expression_statement "plVar9 = (long *)args->overflow_arg_area;" (assignment_expression "plVar9 = (long *)args->overflow_arg_area" identifier = (cast_expression "(long *)args->overflow_arg_area" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (field_expression "args->overflow_arg_area" identifier -> field_identifier))) ;) (expression_statement "args->overflow_arg_area = plVar9 + 1;" (assignment_expression "args->overflow_arg_area = plVar9 + 1" (field_expression "args->overflow_arg_area" identifier -> field_identifier) = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "(paVar2->a).a_longint = *plVar9;" (assignment_expression "(paVar2->a).a_longint = *plVar9" (field_expression "(paVar2->a).a_longint" (parenthesized_expression "(paVar2->a)" ( (field_expression "paVar2->a" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*plVar9" * identifier)) ;)) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "paVar2 = paVar2 + 1;" (assignment_expression "paVar2 = paVar2 + 1" identifier = (binary_expression "paVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < a->count)" ( (binary_expression "uVar3 < a->count" identifier < (field_expression "a->count" identifier -> field_identifier)) )) ;) (return_statement "return L'\0';" return (char_literal "L'\0'" L' escape_sequence ') ;) })) (return_statement "return L'\0';" return (char_literal "L'\0'" L' escape_sequence ') ;) })))
(translation_unit "undefined8 FUN_00147cc9(uint *param_1,ulong *param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_00147cc9(uint *param_1,ulong *param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00147cc9(uint *param_1,ulong *param_2)" identifier (parameter_list "(uint *param_1,ulong *param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "unkbyte10 *pVar4;" type_identifier (pointer_declarator "*pVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)param_2[1];" (assignment_expression "puVar2 = (undefined4 *)param_2[1]" identifier = (cast_expression "(undefined4 *)param_2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }" if (parenthesized_expression "(*param_2 != 0)" ( (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);" do (compound_statement "{\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    }" { (switch_statement "switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }" switch (parenthesized_expression "(*puVar2)" ( (pointer_expression "*puVar2" * identifier) )) (compound_statement "{\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }" { (case_statement "default:\n        return 0xffffffff;" default : (return_statement "return 0xffffffff;" return number_literal ;)) (case_statement "case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(char *)(puVar2 + 4) = (char)*puVar7;" (assignment_expression "*(char *)(puVar2 + 4) = (char)*puVar7" (pointer_expression "*(char *)(puVar2 + 4)" * (cast_expression "(char *)(puVar2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(char)*puVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(char *)(puVar2 + 4) = (char)*puVar7;" (assignment_expression "*(char *)(puVar2 + 4) = (char)*puVar7" (pointer_expression "*(char *)(puVar2 + 4)" * (cast_expression "(char *)(puVar2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(char)*puVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(short *)(puVar2 + 4) = (short)*puVar7;" (assignment_expression "*(short *)(puVar2 + 4) = (short)*puVar7" (pointer_expression "*(short *)(puVar2 + 4)" * (cast_expression "(short *)(puVar2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(short)*puVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "*(short *)(puVar2 + 4) = (short)*puVar7;" (assignment_expression "*(short *)(puVar2 + 4) = (short)*puVar7" (pointer_expression "*(short *)(puVar2 + 4)" * (cast_expression "(short *)(puVar2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (cast_expression "(short)*puVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar7" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0xb0)" ( (binary_expression "uVar1 < 0xb0" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "param_1[1] = uVar1 + 0x10;" (assignment_expression "param_1[1] = uVar1 + 0x10" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar1 + 0x10" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;" case number_literal : (expression_statement "pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);" (assignment_expression "pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" identifier = (cast_expression "(unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" ( (binary_expression "*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0" (binary_expression "*(long *)(param_1 + 2) + 0xfU" (pointer_expression "*(long *)(param_1 + 2)" * (cast_expression "(long *)(param_1 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) + number_literal) & number_literal) )))) ;) (expression_statement "*(unkbyte10 **)(param_1 + 2) = pVar4 + 1;" (assignment_expression "*(unkbyte10 **)(param_1 + 2) = pVar4 + 1" (pointer_expression "*(unkbyte10 **)(param_1 + 2)" * (cast_expression "(unkbyte10 **)(param_1 + 2)" ( (type_descriptor "unkbyte10 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "pVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(unkbyte10 *)(puVar2 + 4) = *pVar4;" (assignment_expression "*(unkbyte10 *)(puVar2 + 4) = *pVar4" (pointer_expression "*(unkbyte10 *)(puVar2 + 4)" * (cast_expression "(unkbyte10 *)(puVar2 + 4)" ( (type_descriptor "unkbyte10 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*pVar4" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" else (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" { (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" * (cast_expression "(undefined4 **)(param_1 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar7 + 2" identifier + number_literal)) ;) }))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(long *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" else (compound_statement "{\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" { (expression_statement "plVar8 = *(long **)(param_1 + 2);" (assignment_expression "plVar8 = *(long **)(param_1 + 2)" identifier = (pointer_expression "*(long **)(param_1 + 2)" * (cast_expression "(long **)(param_1 + 2)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(long **)(param_1 + 2) = plVar8 + 1;" (assignment_expression "*(long **)(param_1 + 2) = plVar8 + 1" (pointer_expression "*(long **)(param_1 + 2)" * (cast_expression "(long **)(param_1 + 2)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "plVar8 + 1" identifier + number_literal)) ;) }))) (expression_statement "pcVar5 = (char *)*plVar8;" (assignment_expression "pcVar5 = (char *)*plVar8" identifier = (cast_expression "(char *)*plVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar5 = "(NULL)";\n        }" { (expression_statement "pcVar5 = "(NULL)";" (assignment_expression "pcVar5 = "(NULL)"" identifier = (string_literal ""(NULL)"" " string_content ")) ;) })) (expression_statement "*(char **)(puVar2 + 4) = pcVar5;" (assignment_expression "*(char **)(puVar2 + 4) = pcVar5" (pointer_expression "*(char **)(puVar2 + 4)" * (cast_expression "(char **)(puVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar6 = (undefined *)*puVar9;" (assignment_expression "puVar6 = (undefined *)*puVar9" identifier = (cast_expression "(undefined *)*puVar9" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }" if (parenthesized_expression "(puVar6 == (undefined *)0x0)" ( (binary_expression "puVar6 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar6 = &DAT_001550a0;\n        }" { (expression_statement "puVar6 = &DAT_001550a0;" (assignment_expression "puVar6 = &DAT_001550a0" identifier = (pointer_expression "&DAT_001550a0" & identifier)) ;) })) (expression_statement "*(undefined **)(puVar2 + 4) = puVar6;" (assignment_expression "*(undefined **)(puVar2 + 4) = puVar6" (pointer_expression "*(undefined **)(puVar2 + 4)" * (cast_expression "(undefined **)(puVar2 + 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;" case number_literal : (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" if (parenthesized_expression "(uVar1 < 0x30)" ( (binary_expression "uVar1 < 0x30" identifier < number_literal) )) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" { (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" identifier = (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" ( (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + (pointer_expression "*(long *)(param_1 + 4)" * (cast_expression "(long *)(param_1 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" else (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" { (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" * (cast_expression "(undefined8 **)(param_1 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" * (cast_expression "(undefined8 *)(puVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (pointer_expression "*puVar9" * identifier)) ;)) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 8;" (assignment_expression "puVar2 = puVar2 + 8" identifier = (binary_expression "puVar2 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < *param_2)" ( (binary_expression "uVar3 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (switch_statement switch (parenthesized_expression ( (pointer_expression * IDENT) )) (compound_statement { (case_statement default : (return_statement return LIT ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) (return_statement return LIT ;) })) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00147cc9(uint *param_1,ulong *param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_00147cc9(uint *param_1,ulong *param_2)" (identifier "FUN_00147cc9") (parameter_list "(uint *param_1,ulong *param_2)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined4 *puVar2;\n  ulong uVar3;\n  unkbyte10 *pVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined4 *puVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  \n  puVar2 = (undefined4 *)param_2[1];\n  if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "unkbyte10 *pVar4;" (type_identifier "unkbyte10") (pointer_declarator "*pVar4" (* "*") (identifier "pVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (expression_statement "puVar2 = (undefined4 *)param_2[1];" (assignment_expression "puVar2 = (undefined4 *)param_2[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)param_2[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*param_2 != 0) {\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }" (if "if") (parenthesized_expression "(*param_2 != 0)" (( "(") (binary_expression "*param_2 != 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = 0;\n    do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);\n    return 0;\n  }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    } while (uVar3 < *param_2);" (do "do") (compound_statement "{\n      switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }\n      uVar3 = uVar3 + 1;\n      puVar2 = puVar2 + 8;\n    }" ({ "{") (switch_statement "switch(*puVar2) {\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }" (switch "switch") (parenthesized_expression "(*puVar2)" (( "(") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) () ")")) (compound_statement "{\n      default:\n        return 0xffffffff;\n      case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;\n      case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;\n      case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;\n      case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;\n      case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;\n      case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;\n      case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;\n      case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n      }" ({ "{") (case_statement "default:\n        return 0xffffffff;" (default "default") (: ":") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";"))) (case_statement "case 1:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;" (case "case") (number_literal "1") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "*(char *)(puVar2 + 4) = (char)*puVar7;" (assignment_expression "*(char *)(puVar2 + 4) = (char)*puVar7" (pointer_expression "*(char *)(puVar2 + 4)" (* "*") (cast_expression "(char *)(puVar2 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(char)*puVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(char *)(puVar2 + 4) = (char)*puVar7;\n        break;" (case "case") (number_literal "2") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "*(char *)(puVar2 + 4) = (char)*puVar7;" (assignment_expression "*(char *)(puVar2 + 4) = (char)*puVar7" (pointer_expression "*(char *)(puVar2 + 4)" (* "*") (cast_expression "(char *)(puVar2 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(char)*puVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;" (case "case") (number_literal "3") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "*(short *)(puVar2 + 4) = (short)*puVar7;" (assignment_expression "*(short *)(puVar2 + 4) = (short)*puVar7" (pointer_expression "*(short *)(puVar2 + 4)" (* "*") (cast_expression "(short *)(puVar2 + 4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(short)*puVar7" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        *(short *)(puVar2 + 4) = (short)*puVar7;\n        break;" (case "case") (number_literal "4") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "*(short *)(puVar2 + 4) = (short)*puVar7;" (assignment_expression "*(short *)(puVar2 + 4) = (short)*puVar7" (pointer_expression "*(short *)(puVar2 + 4)" (* "*") (cast_expression "(short *)(puVar2 + 4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(short)*puVar7" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" (case "case") (number_literal "5") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 6:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" (case "case") (number_literal "6") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "7") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 8:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "8") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 9:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "9") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "10") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xb:\n        uVar1 = param_1[1];\n        if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "0xb") (: ":") (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar1 < 0xb0) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0xb0)" (( "(") (binary_expression "uVar1 < 0xb0" (identifier "uVar1") (< "<") (number_literal "0xb0")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          param_1[1] = uVar1 + 0x10;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "param_1[1] = uVar1 + 0x10;" (assignment_expression "param_1[1] = uVar1 + 0x10" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar1 + 0x10" (identifier "uVar1") (+ "+") (number_literal "0x10"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xc:\n        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);\n        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;\n        *(unkbyte10 *)(puVar2 + 4) = *pVar4;\n        break;" (case "case") (number_literal "0xc") (: ":") (expression_statement "pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);" (assignment_expression "pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" (identifier "pVar4") (= "=") (cast_expression "(unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" (( "(") (type_descriptor "unkbyte10 *" (type_identifier "unkbyte10") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0)" (( "(") (binary_expression "*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0" (binary_expression "*(long *)(param_1 + 2) + 0xfU" (pointer_expression "*(long *)(param_1 + 2)" (* "*") (cast_expression "(long *)(param_1 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (+ "+") (number_literal "0xfU")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "*(unkbyte10 **)(param_1 + 2) = pVar4 + 1;" (assignment_expression "*(unkbyte10 **)(param_1 + 2) = pVar4 + 1" (pointer_expression "*(unkbyte10 **)(param_1 + 2)" (* "*") (cast_expression "(unkbyte10 **)(param_1 + 2)" (( "(") (type_descriptor "unkbyte10 **" (type_identifier "unkbyte10") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "pVar4 + 1" (identifier "pVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(unkbyte10 *)(puVar2 + 4) = *pVar4;" (assignment_expression "*(unkbyte10 *)(puVar2 + 4) = *pVar4" (pointer_expression "*(unkbyte10 *)(puVar2 + 4)" (* "*") (cast_expression "(unkbyte10 *)(puVar2 + 4)" (( "(") (type_descriptor "unkbyte10 *" (type_identifier "unkbyte10") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*pVar4" (* "*") (identifier "pVar4"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xd:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" (case "case") (number_literal "0xd") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xe:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }\n        puVar2[4] = *puVar7;\n        break;" (case "case") (number_literal "0xe") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" (else "else") (compound_statement "{\n          puVar7 = *(undefined4 **)(param_1 + 2);\n          *(undefined4 **)(param_1 + 2) = puVar7 + 2;\n        }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(param_1 + 2);" (assignment_expression "puVar7 = *(undefined4 **)(param_1 + 2)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 2) = puVar7 + 2;" (assignment_expression "*(undefined4 **)(param_1 + 2) = puVar7 + 2" (pointer_expression "*(undefined4 **)(param_1 + 2)" (* "*") (cast_expression "(undefined4 **)(param_1 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "puVar2[4] = *puVar7;" (assignment_expression "puVar2[4] = *puVar7" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xf:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }\n        pcVar5 = (char *)*plVar8;\n        if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }\n        *(char **)(puVar2 + 4) = pcVar5;\n        break;" (case "case") (number_literal "0xf") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "plVar8") (= "=") (cast_expression "(long *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" (else "else") (compound_statement "{\n          plVar8 = *(long **)(param_1 + 2);\n          *(long **)(param_1 + 2) = plVar8 + 1;\n        }" ({ "{") (expression_statement "plVar8 = *(long **)(param_1 + 2);" (assignment_expression "plVar8 = *(long **)(param_1 + 2)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(param_1 + 2)" (* "*") (cast_expression "(long **)(param_1 + 2)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(long **)(param_1 + 2) = plVar8 + 1;" (assignment_expression "*(long **)(param_1 + 2) = plVar8 + 1" (pointer_expression "*(long **)(param_1 + 2)" (* "*") (cast_expression "(long **)(param_1 + 2)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "plVar8 + 1" (identifier "plVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "pcVar5 = (char *)*plVar8;" (assignment_expression "pcVar5 = (char *)*plVar8" (identifier "pcVar5") (= "=") (cast_expression "(char *)*plVar8" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n          pcVar5 = "(NULL)";\n        }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pcVar5 = "(NULL)";\n        }" ({ "{") (expression_statement "pcVar5 = "(NULL)";" (assignment_expression "pcVar5 = "(NULL)"" (identifier "pcVar5") (= "=") (string_literal ""(NULL)"" (" """) (string_content "(NULL)") (" """))) (; ";")) (} "}"))) (expression_statement "*(char **)(puVar2 + 4) = pcVar5;" (assignment_expression "*(char **)(puVar2 + 4) = pcVar5" (pointer_expression "*(char **)(puVar2 + 4)" (* "*") (cast_expression "(char **)(puVar2 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "pcVar5")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x10:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        puVar6 = (undefined *)*puVar9;\n        if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }\n        *(undefined **)(puVar2 + 4) = puVar6;\n        break;" (case "case") (number_literal "0x10") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "puVar6 = (undefined *)*puVar9;" (assignment_expression "puVar6 = (undefined *)*puVar9" (identifier "puVar6") (= "=") (cast_expression "(undefined *)*puVar9" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) (; ";")) (if_statement "if (puVar6 == (undefined *)0x0) {\n          puVar6 = &DAT_001550a0;\n        }" (if "if") (parenthesized_expression "(puVar6 == (undefined *)0x0)" (( "(") (binary_expression "puVar6 == (undefined *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar6 = &DAT_001550a0;\n        }" ({ "{") (expression_statement "puVar6 = &DAT_001550a0;" (assignment_expression "puVar6 = &DAT_001550a0" (identifier "puVar6") (= "=") (pointer_expression "&DAT_001550a0" (& "&") (identifier "DAT_001550a0"))) (; ";")) (} "}"))) (expression_statement "*(undefined **)(puVar2 + 4) = puVar6;" (assignment_expression "*(undefined **)(puVar2 + 4) = puVar6" (pointer_expression "*(undefined **)(puVar2 + 4)" (* "*") (cast_expression "(undefined **)(puVar2 + 4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "puVar6")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x11:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "0x11") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x12:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "0x12") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x13:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "0x13") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x14:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "0x14") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x15:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;\n        break;" (case "case") (number_literal "0x15") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x16:\n        uVar1 = *param_1;\n        if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }\n        *(undefined8 *)(puVar2 + 4) = *puVar9;" (case "case") (number_literal "0x16") (: ":") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 < 0x30) {\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }\n        else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < 0x30)" (( "(") (binary_expression "uVar1 < 0x30" (identifier "uVar1") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));\n          *param_1 = uVar1 + 8;\n        }" ({ "{") (expression_statement "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));" (assignment_expression "puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + *(long *)(param_1 + 4))" (( "(") (binary_expression "(ulong)uVar1 + *(long *)(param_1 + 4)" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (pointer_expression "*(long *)(param_1 + 4)" (* "*") (cast_expression "(long *)(param_1 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "*param_1 = uVar1 + 8;" (assignment_expression "*param_1 = uVar1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" (else "else") (compound_statement "{\n          puVar9 = *(undefined8 **)(param_1 + 2);\n          *(undefined8 **)(param_1 + 2) = puVar9 + 1;\n        }" ({ "{") (expression_statement "puVar9 = *(undefined8 **)(param_1 + 2);" (assignment_expression "puVar9 = *(undefined8 **)(param_1 + 2)" (identifier "puVar9") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 2) = puVar9 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 2) = puVar9 + 1" (pointer_expression "*(undefined8 **)(param_1 + 2)" (* "*") (cast_expression "(undefined8 **)(param_1 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(puVar2 + 4) = *puVar9;" (assignment_expression "*(undefined8 *)(puVar2 + 4) = *puVar9" (pointer_expression "*(undefined8 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";"))) (} "}"))) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2 = puVar2 + 8;" (assignment_expression "puVar2 = puVar2 + 8" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < *param_2)" (( "(") (binary_expression "uVar3 < *param_2" (identifier "uVar3") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

type_1 function_1(type_2 *args,type_3 *a)

{
  type_4 var_1;
  type_5 *var_9;
  type_6 var_8;
  type_7 *var_5;
  char *var_6;
  type_8 *var_7;
  type_9 *var_2;
  type_1 *var_3;
  long *var_4;
  
  var_9 = a->arg;
  if (a->count != 0) {
    var_8 = 0;
    do {
      switch(var_9->type) {
      default:
        return L'\xffffffff';
      case TYPE_SCHAR:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_2 = (type_9 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_2 = (type_9 *)args->overflow_arg_area;
          args->overflow_arg_area = var_2 + 2;
        }
        (var_9->a).a_schar = (char)*var_2;
        break;
      case TYPE_UCHAR:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_2 = (type_9 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_2 = (type_9 *)args->overflow_arg_area;
          args->overflow_arg_area = var_2 + 2;
        }
        (var_9->a).a_schar = (char)*var_2;
        break;
      case TYPE_SHORT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_2 = (type_9 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_2 = (type_9 *)args->overflow_arg_area;
          args->overflow_arg_area = var_2 + 2;
        }
        (var_9->a).a_short = (short)*var_2;
        break;
      case TYPE_USHORT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_2 = (type_9 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_2 = (type_9 *)args->overflow_arg_area;
          args->overflow_arg_area = var_2 + 2;
        }
        (var_9->a).a_short = (short)*var_2;
        break;
      case TYPE_INT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_3 = (type_1 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_3 = (type_1 *)args->overflow_arg_area;
          args->overflow_arg_area = var_3 + 2;
        }
        (var_9->a).a_int = *var_3;
        break;
      case TYPE_UINT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_3 = (type_1 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_3 = (type_1 *)args->overflow_arg_area;
          args->overflow_arg_area = var_3 + 2;
        }
        (var_9->a).a_int = *var_3;
        break;
      case TYPE_LONGINT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_ULONGINT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_LONGLONGINT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_ULONGLONGINT:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_DOUBLE:
        var_1 = args->fp_offset;
        if (var_1 < 0xb0) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->fp_offset = var_1 + 0x10;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_LONGDOUBLE:
        var_5 = (type_7 *)((long)args->overflow_arg_area + 0xfU & 0xfffffffffffffff0);
        args->overflow_arg_area = var_5 + 1;
        (var_9->a).a_longdouble = *var_5;
        break;
      case TYPE_CHAR:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_3 = (type_1 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_3 = (type_1 *)args->overflow_arg_area;
          args->overflow_arg_area = var_3 + 2;
        }
        (var_9->a).a_int = *var_3;
        break;
      case TYPE_WIDE_CHAR:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_3 = (type_1 *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_3 = (type_1 *)args->overflow_arg_area;
          args->overflow_arg_area = var_3 + 2;
        }
        (var_9->a).a_int = *var_3;
        break;
      case TYPE_STRING:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        var_6 = (char *)*var_4;
        if (var_6 == (char *)0x0) {
          var_6 = "(NULL)";
        }
        (var_9->a).a_longint = (long)var_6;
        break;
      case TYPE_WIDE_STRING:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        var_7 = (type_8 *)*var_4;
        if (var_7 == (type_8 *)0x0) {
          var_7 = wide_null_string_2845;
        }
        (var_9->a).a_longint = (long)var_7;
        break;
      case TYPE_POINTER:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_COUNT_SCHAR_POINTER:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_COUNT_SHORT_POINTER:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_COUNT_INT_POINTER:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_COUNT_LONGINT_POINTER:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
        break;
      case TYPE_COUNT_LONGLONGINT_POINTER:
        var_1 = args->gp_offset;
        if (var_1 < 0x30) {
          var_4 = (long *)((type_6)var_1 + (long)args->reg_save_area);
          args->gp_offset = var_1 + 8;
        }
        else {
          var_4 = (long *)args->overflow_arg_area;
          args->overflow_arg_area = var_4 + 1;
        }
        (var_9->a).a_longint = *var_4;
      }
      var_8 = var_8 + 1;
      var_9 = var_9 + 1;
    } while (var_8 < a->count);
    return L'\0';
  }
  return L'\0';
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (switch_statement condition: (parenthesized_expression (pointer_expression argument: (identifier))) body: (compound_statement (case_statement (return_statement (number_literal))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (return_statement (number_literal)))) (return_statement (number_literal)))))

undefined8 MASKED(uint *param_1,ulong *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  ulong uVar3;
  unkbyte10 *pVar4;
  char *pcVar5;
  undefined *puVar6;
  undefined4 *puVar7;
  long *plVar8;
  undefined8 *puVar9;
  
  puVar2 = (undefined4 *)param_2[1];
  if (*param_2 != 0) {
    uVar3 = 0;
    do {
      switch(*puVar2) {
      default:
        return 0xffffffff;
      case 1:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(char *)(puVar2 + 4) = (char)*puVar7;
        break;
      case 2:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(char *)(puVar2 + 4) = (char)*puVar7;
        break;
      case 3:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(short *)(puVar2 + 4) = (short)*puVar7;
        break;
      case 4:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        *(short *)(puVar2 + 4) = (short)*puVar7;
        break;
      case 5:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 6:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 7:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 8:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 9:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 10:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0xb:
        uVar1 = param_1[1];
        if (uVar1 < 0xb0) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          param_1[1] = uVar1 + 0x10;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0xc:
        pVar4 = (unkbyte10 *)(*(long *)(param_1 + 2) + 0xfU & 0xfffffffffffffff0);
        *(unkbyte10 **)(param_1 + 2) = pVar4 + 1;
        *(unkbyte10 *)(puVar2 + 4) = *pVar4;
        break;
      case 0xd:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 0xe:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar7 = (undefined4 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar7 = *(undefined4 **)(param_1 + 2);
          *(undefined4 **)(param_1 + 2) = puVar7 + 2;
        }
        puVar2[4] = *puVar7;
        break;
      case 0xf:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          plVar8 = (long *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          plVar8 = *(long **)(param_1 + 2);
          *(long **)(param_1 + 2) = plVar8 + 1;
        }
        pcVar5 = (char *)*plVar8;
        if (pcVar5 == (char *)0x0) {
          pcVar5 = "(NULL)";
        }
        *(char **)(puVar2 + 4) = pcVar5;
        break;
      case 0x10:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        puVar6 = (undefined *)*puVar9;
        if (puVar6 == (undefined *)0x0) {
          puVar6 = &DAT_001550a0;
        }
        *(undefined **)(puVar2 + 4) = puVar6;
        break;
      case 0x11:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x12:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x13:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x14:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x15:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
        break;
      case 0x16:
        uVar1 = *param_1;
        if (uVar1 < 0x30) {
          puVar9 = (undefined8 *)((ulong)uVar1 + *(long *)(param_1 + 4));
          *param_1 = uVar1 + 8;
        }
        else {
          puVar9 = *(undefined8 **)(param_1 + 2);
          *(undefined8 **)(param_1 + 2) = puVar9 + 1;
        }
        *(undefined8 *)(puVar2 + 4) = *puVar9;
      }
      uVar3 = uVar3 + 1;
      puVar2 = puVar2 + 8;
    } while (uVar3 < *param_2);
    return 0;
  }
  return 0;
}

