
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3 dlang_type(string *decl,char *mangled)

{
  byte *pbVar1;
  char *pcVar2;
  int iVar3;
  char *pcVar4;
  byte *mangled_00;
  bool bVar5;
  string *in_stack_ffffffc4;
  char *in_stack_ffffffc8;
  dlang_symbol_kinds in_stack_ffffffcc;
  string type;
  
  if (mangled == (char *)0x0) {
    return (char *)0x0;
  }
  if (*mangled == '\0') {
    return (char *)0x0;
  }
  switch(*mangled) {
  case 'A':
    pcVar2 = dlang_type(decl,mangled + 1);
    string_append(decl,"[]");
    break;
  case 'B':
    pcVar2 = dlang_number(mangled + 1,(long *)&type);
    if (pcVar2 == (char *)0x0) {
      return (char *)0x0;
    }
    string_append(decl,"Tuple!(");
    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {
      pcVar2 = dlang_type(decl,pcVar2);
      if (type.b == (char *)0x0) {
        type.b = (char *)0xffffffff;
        break;
      }
      string_append(decl,", ");
    }
    goto LAB_0017c9f9;
  case 'C':
  case 'E':
  case 'I':
  case 'S':
  case 'T':
    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);
    break;
  case 'D':
    type.e = (char *)0x0;
    type.p = (char *)0x0;
    type.b = (char *)0x0;
    pcVar2 = dlang_type_modifiers(&type,mangled + 1);
    if (type.b == type.p) {
      pcVar2 = dlang_function_type(decl,pcVar2);
      string_append(decl,"delegate");
    }
    else {
      iVar3 = (int)type.p - (int)type.b;
      pcVar2 = dlang_function_type(decl,pcVar2);
      string_append(decl,"delegate");
      string_appendn(decl,type.b,iVar3);
    }
    goto joined_r0x0017cc10;
  case 'G':
    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {
      pcVar2 = dlang_type(decl,mangled + 1);
      string_append(decl,"[");
    }
    else {
      pbVar1 = (byte *)(mangled + 2);
      do {
        mangled_00 = pbVar1;
        pbVar1 = mangled_00 + 1;
      } while ((_sch_istable[*mangled_00] & 4) != 0);
      pcVar2 = dlang_type(decl,(char *)mangled_00);
      string_append(decl,"[");
      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {
        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));
      }
    }
    string_append(decl,"]");
    break;
  case 'H':
    type.e = (char *)0x0;
    type.p = (char *)0x0;
    type.b = (char *)0x0;
    pcVar2 = dlang_type(&type,mangled + 1);
    if (type.b == type.p) {
      pcVar2 = dlang_type(decl,pcVar2);
      string_append(decl,"[");
    }
    else {
      iVar3 = (int)type.p - (int)type.b;
      pcVar2 = dlang_type(decl,pcVar2);
      string_append(decl,"[");
      string_appendn(decl,type.b,iVar3);
    }
    string_append(decl,"]");
joined_r0x0017cc10:
    if (type.b != (char *)0x0) {
      free(type.b);
    }
    break;
  default:
    return (char *)0x0;
  case 'N':
    if (mangled[1] == 'g') {
      pcVar2 = mangled + 2;
      pcVar4 = "inout(";
    }
    else {
      if (mangled[1] != 'h') {
        return (char *)0x0;
      }
      pcVar2 = mangled + 2;
      pcVar4 = "__vector(";
    }
    goto LAB_0017ca69;
  case 'O':
    pcVar2 = mangled + 1;
    pcVar4 = "shared(";
    goto LAB_0017ca69;
  case 'P':
    pcVar2 = mangled + 1;
    mangled = mangled + 1;
    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {
      pcVar2 = dlang_type(decl,mangled);
      string_append(decl,"*");
      return pcVar2;
    }
  case 'F':
  case 'R':
  case 'U':
  case 'V':
  case 'W':
  case 'Y':
    pcVar2 = dlang_function_type(decl,mangled);
    string_append(decl,"function");
    return pcVar2;
  case 'a':
    pcVar2 = mangled + 1;
    string_append(decl,"char");
    break;
  case 'b':
    pcVar2 = mangled + 1;
    string_append(decl,"bool");
    break;
  case 'c':
    pcVar2 = mangled + 1;
    string_append(decl,"creal");
    break;
  case 'd':
    pcVar2 = mangled + 1;
    string_append(decl,"double");
    break;
  case 'e':
    pcVar2 = mangled + 1;
    string_append(decl,"real");
    break;
  case 'f':
    pcVar2 = mangled + 1;
    string_append(decl,"float");
    break;
  case 'g':
    pcVar2 = mangled + 1;
    string_append(decl,"byte");
    break;
  case 'h':
    pcVar2 = mangled + 1;
    string_append(decl,"ubyte");
    break;
  case 'i':
    pcVar2 = mangled + 1;
    string_append(decl,"int");
    break;
  case 'j':
    pcVar2 = mangled + 1;
    string_append(decl,"ireal");
    break;
  case 'k':
    pcVar2 = mangled + 1;
    string_append(decl,"uint");
    break;
  case 'l':
    pcVar2 = mangled + 1;
    string_append(decl,"long");
    break;
  case 'm':
    pcVar2 = mangled + 1;
    string_append(decl,"ulong");
    break;
  case 'n':
    pcVar2 = mangled + 1;
    string_append(decl,"none");
    break;
  case 'o':
    pcVar2 = mangled + 1;
    string_append(decl,"ifloat");
    break;
  case 'p':
    pcVar2 = mangled + 1;
    string_append(decl,"idouble");
    break;
  case 'q':
    pcVar2 = mangled + 1;
    string_append(decl,"cfloat");
    break;
  case 'r':
    pcVar2 = mangled + 1;
    string_append(decl,"cdouble");
    break;
  case 's':
    pcVar2 = mangled + 1;
    string_append(decl,"short");
    break;
  case 't':
    pcVar2 = mangled + 1;
    string_append(decl,"ushort");
    break;
  case 'u':
    pcVar2 = mangled + 1;
    string_append(decl,"wchar");
    break;
  case 'v':
    pcVar2 = mangled + 1;
    string_append(decl,"void");
    break;
  case 'w':
    pcVar2 = mangled + 1;
    string_append(decl,"dchar");
    break;
  case 'x':
    pcVar2 = mangled + 1;
    pcVar4 = "const(";
    goto LAB_0017ca69;
  case 'y':
    pcVar2 = mangled + 1;
    pcVar4 = "immutable(";
LAB_0017ca69:
    string_append(decl,pcVar4);
    pcVar2 = dlang_type(decl,pcVar2);
LAB_0017c9f9:
    string_append(decl,")");
    break;
  case 'z':
    if (mangled[1] == 'i') {
      string_append(decl,"cent");
      return mangled + 2;
    }
    if (mangled[1] != 'k') {
      return (char *)0x0;
    }
    string_append(decl,"ucent");
    return mangled + 2;
  }
  return pcVar2;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x0017cbd4) */
/* WARNING: Removing unreachable block (ram,0x0017c934) */
/* WARNING: Removing unreachable block (ram,0x0017c969) */

char * __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)

{
  byte *pbVar1;
  byte bVar2;
  char *pcVar3;
  byte *pbVar4;
  int iStack_28;
  
  if (param_2 == (char *)0x0) {
    return (char *)0x0;
  }
  if (*param_2 == '\0') {
    return (char *)0x0;
  }
  switch(*param_2) {
  case 'A':
    param_2 = (char *)FUN_0017c870();
    FUN_0017b850();
    break;
  case 'B':
    param_2 = (char *)FUN_0017b740();
    if (param_2 == (char *)0x0) {
      return (char *)0x0;
    }
    FUN_0017b850();
    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {
      FUN_0017b850();
      iStack_28 = iStack_28 + -1;
    }
    goto code_r0x0017c9f9;
  case 'C':
  case 'E':
  case 'I':
  case 'S':
  case 'T':
    param_2 = (char *)FUN_0017d830();
    break;
  case 'D':
    FUN_0017b990();
    param_2 = (char *)FUN_0017c690();
    FUN_0017b850();
    break;
  case 'G':
    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {
      param_2 = (char *)FUN_0017c870();
      FUN_0017b850();
    }
    else {
      pbVar4 = (byte *)(param_2 + 2);
      do {
        pbVar1 = pbVar4 + ~(uint)param_2;
        bVar2 = *pbVar4;
        pbVar4 = pbVar4 + 1;
      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);
      param_2 = (char *)FUN_0017c870();
      FUN_0017b850();
      if (pbVar1 != (byte *)0x0) {
        FUN_0017bbd0();
      }
    }
    FUN_0017b850();
    break;
  case 'H':
    FUN_0017c870();
    param_2 = (char *)FUN_0017c870();
    FUN_0017b850();
    FUN_0017b850();
    break;
  default:
    return (char *)0x0;
  case 'N':
    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {
      return (char *)0x0;
    }
    goto code_r0x0017ca69;
  case 'O':
    goto code_r0x0017ca69;
  case 'P':
    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))
    {
      pcVar3 = (char *)FUN_0017c870();
      FUN_0017b850();
      return pcVar3;
    }
  case 'F':
  case 'R':
  case 'U':
  case 'V':
  case 'W':
  case 'Y':
    pcVar3 = (char *)FUN_0017c690();
    FUN_0017b850();
    return pcVar3;
  case 'a':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'b':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'c':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'd':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'e':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'f':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'g':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'h':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'i':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'j':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'k':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'l':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'm':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'n':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'o':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'p':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'q':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'r':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 's':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 't':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'u':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'v':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'w':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'x':
    goto code_r0x0017ca69;
  case 'y':
code_r0x0017ca69:
    FUN_0017b850();
    param_2 = (char *)FUN_0017c870();
code_r0x0017c9f9:
    FUN_0017b850();
    break;
  case 'z':
    if (param_2[1] == 'i') {
      FUN_0017b850();
      return param_2 + 2;
    }
    if (param_2[1] != 'k') {
      return (char *)0x0;
    }
    FUN_0017b850();
    return param_2 + 2;
  }
  return param_2;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x185787
SUB ESP,0x2c
TEST EDX,EDX
JZ 0x0017c8a8
MOV EDI,EAX
MOVZX EAX,byte ptr [EDX]
TEST AL,AL
JZ 0x0017c8a8
SUB EAX,0x41
CMP AL,0x39
JA 0x0017c8a8
MOVZX EAX,AL
MOV ECX,dword ptr [EBX + EAX*0x4 + 0xfff37a38]
ADD ECX,EBX
JMP ECX
XOR ESI,ESI
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Removing unreachable block (ram,0x0017cbd4) */\n/* WARNING: Removing unreachable block (ram,0x0017c934) */\n/* WARNING: Removing unreachable block (ram,0x0017c969) */\n\nchar * __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}\n\n" comment comment comment comment (function_definition "char * __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_0017c870(undefined4 param_1,char *param_2)" identifier (parameter_list "(undefined4 param_1,char *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int iStack_28;" primitive_type identifier ;) (if_statement "if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (char *)0x0;\n  }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*param_2 == '\0') {\n    return (char *)0x0;\n  }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (char *)0x0;\n  }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (switch_statement "switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }" switch (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (compound_statement "{\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }" { (case_statement "case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;" case (char_literal "'A'" ' character ') : (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;" case (char_literal "'B'" ' character ') : (expression_statement "param_2 = (char *)FUN_0017b740();" (assignment_expression "param_2 = (char *)FUN_0017b740()" identifier = (cast_expression "(char *)FUN_0017b740()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b740()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (while_statement "while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }" while (parenthesized_expression "((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)))" ( (parenthesized_expression "(iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))" ( (binary_expression "iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)" (binary_expression "iStack_28 != 0" identifier != number_literal) && (parenthesized_expression "(param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)" ( (comma_expression "param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) , (binary_expression "iStack_28 + -1 != 0" (binary_expression "iStack_28 + -1" identifier + number_literal) != number_literal)) ))) )) )) (compound_statement "{\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (expression_statement "iStack_28 = iStack_28 + -1;" (assignment_expression "iStack_28 = iStack_28 + -1" identifier = (binary_expression "iStack_28 + -1" identifier + number_literal)) ;) })) (goto_statement "goto code_r0x0017c9f9;" goto statement_identifier ;)) (case_statement "case 'C':" case (char_literal "'C'" ' character ') :) (case_statement "case 'E':" case (char_literal "'E'" ' character ') :) (case_statement "case 'I':" case (char_literal "'I'" ' character ') :) (case_statement "case 'S':" case (char_literal "'S'" ' character ') :) (case_statement "case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;" case (char_literal "'T'" ' character ') : (expression_statement "param_2 = (char *)FUN_0017d830();" (assignment_expression "param_2 = (char *)FUN_0017d830()" identifier = (cast_expression "(char *)FUN_0017d830()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d830()" identifier (argument_list "()" ( ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;" case (char_literal "'D'" ' character ') : (expression_statement "FUN_0017b990();" (call_expression "FUN_0017b990()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = (char *)FUN_0017c690();" (assignment_expression "param_2 = (char *)FUN_0017c690()" identifier = (cast_expression "(char *)FUN_0017c690()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c690()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;" case (char_literal "'G'" ' character ') : (if_statement "if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" if (parenthesized_expression "(((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0)" ( (binary_expression "((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)(byte)param_2[1] * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)(byte)param_2[1] * 2" (cast_expression "(uint)(byte)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)param_2[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) * number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }" { (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" else (compound_statement "{\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" { (expression_statement "pbVar4 = (byte *)(param_2 + 2);" (assignment_expression "pbVar4 = (byte *)(param_2 + 2)" identifier = (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) ;) (do_statement "do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);" do (compound_statement "{\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      }" { (expression_statement "pbVar1 = pbVar4 + ~(uint)param_2;" (assignment_expression "pbVar1 = pbVar4 + ~(uint)param_2" identifier = (binary_expression "pbVar4 + ~(uint)param_2" identifier + (unary_expression "~(uint)param_2" ~ (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0)" ( (binary_expression "((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0" (parenthesized_expression "((&DAT_0023a160)[(uint)bVar2 * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)bVar2 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)bVar2 * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (if_statement "if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }" if (parenthesized_expression "(pbVar1 != (byte *)0x0)" ( (binary_expression "pbVar1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_0017bbd0();\n      }" { (expression_statement "FUN_0017bbd0();" (call_expression "FUN_0017bbd0()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;" case (char_literal "'H'" ' character ') : (expression_statement "FUN_0017c870();" (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "default:\n    return (char *)0x0;" default : (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;" case (char_literal "'N'" ' character ') : (if_statement "if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "((param_2[1] != 'g') && (param_2[1] != 'h'))" ( (binary_expression "(param_2[1] != 'g') && (param_2[1] != 'h')" (parenthesized_expression "(param_2[1] != 'g')" ( (binary_expression "param_2[1] != 'g'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'g'" ' character ')) )) && (parenthesized_expression "(param_2[1] != 'h')" ( (binary_expression "param_2[1] != 'h'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'h'" ' character ')) ))) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (goto_statement "goto code_r0x0017ca69;" goto statement_identifier ;)) (case_statement "case 'O':\n    goto code_r0x0017ca69;" case (char_literal "'O'" ' character ') : (goto_statement "goto code_r0x0017ca69;" goto statement_identifier ;)) (case_statement "case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" case (char_literal "'P'" ' character ') : (if_statement "if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" if (parenthesized_expression "((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))" ( (binary_expression "(0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0)" (parenthesized_expression "(0x13 < (byte)(param_2[1] + 0xbaU))" ( (binary_expression "0x13 < (byte)(param_2[1] + 0xbaU)" number_literal < (call_expression "(byte)(param_2[1] + 0xbaU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2[1] + 0xbaU)" ( (binary_expression "param_2[1] + 0xbaU" (subscript_expression "param_2[1]" identifier [ number_literal ]) + number_literal) )))) )) || (parenthesized_expression "((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0)" ( (binary_expression "(1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0" (parenthesized_expression "(1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U)" ( (binary_expression "1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U" (binary_expression "1 << (param_2[1] + 0xbaU & 0x1f)" number_literal << (parenthesized_expression "(param_2[1] + 0xbaU & 0x1f)" ( (binary_expression "param_2[1] + 0xbaU & 0x1f" (binary_expression "param_2[1] + 0xbaU" (subscript_expression "param_2[1]" identifier [ number_literal ]) + number_literal) & number_literal) ))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" { (expression_statement "pcVar3 = (char *)FUN_0017c870();" (assignment_expression "pcVar3 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return pcVar3;" return identifier ;) }))) (case_statement "case 'F':" case (char_literal "'F'" ' character ') :) (case_statement "case 'R':" case (char_literal "'R'" ' character ') :) (case_statement "case 'U':" case (char_literal "'U'" ' character ') :) (case_statement "case 'V':" case (char_literal "'V'" ' character ') :) (case_statement "case 'W':" case (char_literal "'W'" ' character ') :) (case_statement "case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;" case (char_literal "'Y'" ' character ') : (expression_statement "pcVar3 = (char *)FUN_0017c690();" (assignment_expression "pcVar3 = (char *)FUN_0017c690()" identifier = (cast_expression "(char *)FUN_0017c690()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c690()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return pcVar3;" return identifier ;)) (case_statement "case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'a'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'b'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'c'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'d'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'e'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'f'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'g'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'h'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'i'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'j'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'k'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'l'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'m'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'n'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'o'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'p'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'q'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'r'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'s'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'t'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'u'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'v'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'w'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'x':\n    goto code_r0x0017ca69;" case (char_literal "'x'" ' character ') : (goto_statement "goto code_r0x0017ca69;" goto statement_identifier ;)) (case_statement "case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;" case (char_literal "'y'" ' character ') : (labeled_statement "code_r0x0017ca69:\n    FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (labeled_statement "code_r0x0017c9f9:\n    FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) (break_statement "break;" break ;)) (case_statement "case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;" case (char_literal "'z'" ' character ') : (if_statement "if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }" if (parenthesized_expression "(param_2[1] == 'i')" ( (binary_expression "param_2[1] == 'i'" (subscript_expression "param_2[1]" identifier [ number_literal ]) == (char_literal "'i'" ' character ')) )) (compound_statement "{\n      FUN_0017b850();\n      return param_2 + 2;\n    }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_2 + 2;" return (binary_expression "param_2 + 2" identifier + number_literal) ;) })) (if_statement "if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(param_2[1] != 'k')" ( (binary_expression "param_2[1] != 'k'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'k'" ' character ')) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_2 + 2;" return (binary_expression "param_2 + 2" identifier + number_literal) ;)) })) (return_statement "return param_2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 dlang_type(string *decl,char *mangled)\n\n{\n  byte *pbVar1;\n  char *pcVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *mangled_00;\n  bool bVar5;\n  string *in_stack_ffffffc4;\n  char *in_stack_ffffffc8;\n  dlang_symbol_kinds in_stack_ffffffcc;\n  string type;\n  \n  if (mangled == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*mangled == '\0') {\n    return (char *)0x0;\n  }\n  switch(*mangled) {\n  case 'A':\n    pcVar2 = dlang_type(decl,mangled + 1);\n    string_append(decl,"[]");\n    break;\n  case 'B':\n    pcVar2 = dlang_number(mangled + 1,(long *)&type);\n    if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    string_append(decl,"Tuple!(");\n    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }\n    goto LAB_0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);\n    break;\n  case 'D':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type_modifiers(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }\n    goto joined_r0x0017cc10;\n  case 'G':\n    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }\n    string_append(decl,"]");\n    break;\n  case 'H':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }\n    string_append(decl,"]");\njoined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }\n    goto LAB_0017ca69;\n  case 'O':\n    pcVar2 = mangled + 1;\n    pcVar4 = "shared(";\n    goto LAB_0017ca69;\n  case 'P':\n    pcVar2 = mangled + 1;\n    mangled = mangled + 1;\n    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar2 = dlang_function_type(decl,mangled);\n    string_append(decl,"function");\n    return pcVar2;\n  case 'a':\n    pcVar2 = mangled + 1;\n    string_append(decl,"char");\n    break;\n  case 'b':\n    pcVar2 = mangled + 1;\n    string_append(decl,"bool");\n    break;\n  case 'c':\n    pcVar2 = mangled + 1;\n    string_append(decl,"creal");\n    break;\n  case 'd':\n    pcVar2 = mangled + 1;\n    string_append(decl,"double");\n    break;\n  case 'e':\n    pcVar2 = mangled + 1;\n    string_append(decl,"real");\n    break;\n  case 'f':\n    pcVar2 = mangled + 1;\n    string_append(decl,"float");\n    break;\n  case 'g':\n    pcVar2 = mangled + 1;\n    string_append(decl,"byte");\n    break;\n  case 'h':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ubyte");\n    break;\n  case 'i':\n    pcVar2 = mangled + 1;\n    string_append(decl,"int");\n    break;\n  case 'j':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ireal");\n    break;\n  case 'k':\n    pcVar2 = mangled + 1;\n    string_append(decl,"uint");\n    break;\n  case 'l':\n    pcVar2 = mangled + 1;\n    string_append(decl,"long");\n    break;\n  case 'm':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ulong");\n    break;\n  case 'n':\n    pcVar2 = mangled + 1;\n    string_append(decl,"none");\n    break;\n  case 'o':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ifloat");\n    break;\n  case 'p':\n    pcVar2 = mangled + 1;\n    string_append(decl,"idouble");\n    break;\n  case 'q':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cfloat");\n    break;\n  case 'r':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cdouble");\n    break;\n  case 's':\n    pcVar2 = mangled + 1;\n    string_append(decl,"short");\n    break;\n  case 't':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ushort");\n    break;\n  case 'u':\n    pcVar2 = mangled + 1;\n    string_append(decl,"wchar");\n    break;\n  case 'v':\n    pcVar2 = mangled + 1;\n    string_append(decl,"void");\n    break;\n  case 'w':\n    pcVar2 = mangled + 1;\n    string_append(decl,"dchar");\n    break;\n  case 'x':\n    pcVar2 = mangled + 1;\n    pcVar4 = "const(";\n    goto LAB_0017ca69;\n  case 'y':\n    pcVar2 = mangled + 1;\n    pcVar4 = "immutable(";\nLAB_0017ca69:\n    string_append(decl,pcVar4);\n    pcVar2 = dlang_type(decl,pcVar2);\nLAB_0017c9f9:\n    string_append(decl,")");\n    break;\n  case 'z':\n    if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }\n    if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }\n    string_append(decl,"ucent");\n    return mangled + 2;\n  }\n  return pcVar2;\n}\n\n" comment (function_definition "char * __regparm3 dlang_type(string *decl,char *mangled)\n\n{\n  byte *pbVar1;\n  char *pcVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *mangled_00;\n  bool bVar5;\n  string *in_stack_ffffffc4;\n  char *in_stack_ffffffc8;\n  dlang_symbol_kinds in_stack_ffffffcc;\n  string type;\n  \n  if (mangled == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*mangled == '\0') {\n    return (char *)0x0;\n  }\n  switch(*mangled) {\n  case 'A':\n    pcVar2 = dlang_type(decl,mangled + 1);\n    string_append(decl,"[]");\n    break;\n  case 'B':\n    pcVar2 = dlang_number(mangled + 1,(long *)&type);\n    if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    string_append(decl,"Tuple!(");\n    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }\n    goto LAB_0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);\n    break;\n  case 'D':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type_modifiers(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }\n    goto joined_r0x0017cc10;\n  case 'G':\n    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }\n    string_append(decl,"]");\n    break;\n  case 'H':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }\n    string_append(decl,"]");\njoined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }\n    goto LAB_0017ca69;\n  case 'O':\n    pcVar2 = mangled + 1;\n    pcVar4 = "shared(";\n    goto LAB_0017ca69;\n  case 'P':\n    pcVar2 = mangled + 1;\n    mangled = mangled + 1;\n    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar2 = dlang_function_type(decl,mangled);\n    string_append(decl,"function");\n    return pcVar2;\n  case 'a':\n    pcVar2 = mangled + 1;\n    string_append(decl,"char");\n    break;\n  case 'b':\n    pcVar2 = mangled + 1;\n    string_append(decl,"bool");\n    break;\n  case 'c':\n    pcVar2 = mangled + 1;\n    string_append(decl,"creal");\n    break;\n  case 'd':\n    pcVar2 = mangled + 1;\n    string_append(decl,"double");\n    break;\n  case 'e':\n    pcVar2 = mangled + 1;\n    string_append(decl,"real");\n    break;\n  case 'f':\n    pcVar2 = mangled + 1;\n    string_append(decl,"float");\n    break;\n  case 'g':\n    pcVar2 = mangled + 1;\n    string_append(decl,"byte");\n    break;\n  case 'h':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ubyte");\n    break;\n  case 'i':\n    pcVar2 = mangled + 1;\n    string_append(decl,"int");\n    break;\n  case 'j':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ireal");\n    break;\n  case 'k':\n    pcVar2 = mangled + 1;\n    string_append(decl,"uint");\n    break;\n  case 'l':\n    pcVar2 = mangled + 1;\n    string_append(decl,"long");\n    break;\n  case 'm':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ulong");\n    break;\n  case 'n':\n    pcVar2 = mangled + 1;\n    string_append(decl,"none");\n    break;\n  case 'o':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ifloat");\n    break;\n  case 'p':\n    pcVar2 = mangled + 1;\n    string_append(decl,"idouble");\n    break;\n  case 'q':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cfloat");\n    break;\n  case 'r':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cdouble");\n    break;\n  case 's':\n    pcVar2 = mangled + 1;\n    string_append(decl,"short");\n    break;\n  case 't':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ushort");\n    break;\n  case 'u':\n    pcVar2 = mangled + 1;\n    string_append(decl,"wchar");\n    break;\n  case 'v':\n    pcVar2 = mangled + 1;\n    string_append(decl,"void");\n    break;\n  case 'w':\n    pcVar2 = mangled + 1;\n    string_append(decl,"dchar");\n    break;\n  case 'x':\n    pcVar2 = mangled + 1;\n    pcVar4 = "const(";\n    goto LAB_0017ca69;\n  case 'y':\n    pcVar2 = mangled + 1;\n    pcVar4 = "immutable(";\nLAB_0017ca69:\n    string_append(decl,pcVar4);\n    pcVar2 = dlang_type(decl,pcVar2);\nLAB_0017c9f9:\n    string_append(decl,")");\n    break;\n  case 'z':\n    if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }\n    if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }\n    string_append(decl,"ucent");\n    return mangled + 2;\n  }\n  return pcVar2;\n}" primitive_type (pointer_declarator "* __regparm3 dlang_type(string *decl,char *mangled)" * (ERROR "__regparm3" identifier) (function_declarator "dlang_type(string *decl,char *mangled)" identifier (parameter_list "(string *decl,char *mangled)" ( (parameter_declaration "string *decl" type_identifier (pointer_declarator "*decl" * identifier)) , (parameter_declaration "char *mangled" primitive_type (pointer_declarator "*mangled" * identifier)) )))) (compound_statement "{\n  byte *pbVar1;\n  char *pcVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *mangled_00;\n  bool bVar5;\n  string *in_stack_ffffffc4;\n  char *in_stack_ffffffc8;\n  dlang_symbol_kinds in_stack_ffffffcc;\n  string type;\n  \n  if (mangled == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*mangled == '\0') {\n    return (char *)0x0;\n  }\n  switch(*mangled) {\n  case 'A':\n    pcVar2 = dlang_type(decl,mangled + 1);\n    string_append(decl,"[]");\n    break;\n  case 'B':\n    pcVar2 = dlang_number(mangled + 1,(long *)&type);\n    if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    string_append(decl,"Tuple!(");\n    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }\n    goto LAB_0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);\n    break;\n  case 'D':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type_modifiers(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }\n    goto joined_r0x0017cc10;\n  case 'G':\n    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }\n    string_append(decl,"]");\n    break;\n  case 'H':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }\n    string_append(decl,"]");\njoined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }\n    goto LAB_0017ca69;\n  case 'O':\n    pcVar2 = mangled + 1;\n    pcVar4 = "shared(";\n    goto LAB_0017ca69;\n  case 'P':\n    pcVar2 = mangled + 1;\n    mangled = mangled + 1;\n    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar2 = dlang_function_type(decl,mangled);\n    string_append(decl,"function");\n    return pcVar2;\n  case 'a':\n    pcVar2 = mangled + 1;\n    string_append(decl,"char");\n    break;\n  case 'b':\n    pcVar2 = mangled + 1;\n    string_append(decl,"bool");\n    break;\n  case 'c':\n    pcVar2 = mangled + 1;\n    string_append(decl,"creal");\n    break;\n  case 'd':\n    pcVar2 = mangled + 1;\n    string_append(decl,"double");\n    break;\n  case 'e':\n    pcVar2 = mangled + 1;\n    string_append(decl,"real");\n    break;\n  case 'f':\n    pcVar2 = mangled + 1;\n    string_append(decl,"float");\n    break;\n  case 'g':\n    pcVar2 = mangled + 1;\n    string_append(decl,"byte");\n    break;\n  case 'h':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ubyte");\n    break;\n  case 'i':\n    pcVar2 = mangled + 1;\n    string_append(decl,"int");\n    break;\n  case 'j':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ireal");\n    break;\n  case 'k':\n    pcVar2 = mangled + 1;\n    string_append(decl,"uint");\n    break;\n  case 'l':\n    pcVar2 = mangled + 1;\n    string_append(decl,"long");\n    break;\n  case 'm':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ulong");\n    break;\n  case 'n':\n    pcVar2 = mangled + 1;\n    string_append(decl,"none");\n    break;\n  case 'o':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ifloat");\n    break;\n  case 'p':\n    pcVar2 = mangled + 1;\n    string_append(decl,"idouble");\n    break;\n  case 'q':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cfloat");\n    break;\n  case 'r':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cdouble");\n    break;\n  case 's':\n    pcVar2 = mangled + 1;\n    string_append(decl,"short");\n    break;\n  case 't':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ushort");\n    break;\n  case 'u':\n    pcVar2 = mangled + 1;\n    string_append(decl,"wchar");\n    break;\n  case 'v':\n    pcVar2 = mangled + 1;\n    string_append(decl,"void");\n    break;\n  case 'w':\n    pcVar2 = mangled + 1;\n    string_append(decl,"dchar");\n    break;\n  case 'x':\n    pcVar2 = mangled + 1;\n    pcVar4 = "const(";\n    goto LAB_0017ca69;\n  case 'y':\n    pcVar2 = mangled + 1;\n    pcVar4 = "immutable(";\nLAB_0017ca69:\n    string_append(decl,pcVar4);\n    pcVar2 = dlang_type(decl,pcVar2);\nLAB_0017c9f9:\n    string_append(decl,")");\n    break;\n  case 'z':\n    if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }\n    if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }\n    string_append(decl,"ucent");\n    return mangled + 2;\n  }\n  return pcVar2;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *mangled_00;" type_identifier (pointer_declarator "*mangled_00" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "string *in_stack_ffffffc4;" type_identifier (pointer_declarator "*in_stack_ffffffc4" * identifier) ;) (declaration "char *in_stack_ffffffc8;" primitive_type (pointer_declarator "*in_stack_ffffffc8" * identifier) ;) (declaration "dlang_symbol_kinds in_stack_ffffffcc;" type_identifier identifier ;) (declaration "string type;" type_identifier identifier ;) (if_statement "if (mangled == (char *)0x0) {\n    return (char *)0x0;\n  }" if (parenthesized_expression "(mangled == (char *)0x0)" ( (binary_expression "mangled == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (char *)0x0;\n  }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*mangled == '\0') {\n    return (char *)0x0;\n  }" if (parenthesized_expression "(*mangled == '\0')" ( (binary_expression "*mangled == '\0'" (pointer_expression "*mangled" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (char *)0x0;\n  }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (switch_statement "switch(*mangled) {\n  case 'A':\n    pcVar2 = dlang_type(decl,mangled + 1);\n    string_append(decl,"[]");\n    break;\n  case 'B':\n    pcVar2 = dlang_number(mangled + 1,(long *)&type);\n    if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    string_append(decl,"Tuple!(");\n    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }\n    goto LAB_0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);\n    break;\n  case 'D':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type_modifiers(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }\n    goto joined_r0x0017cc10;\n  case 'G':\n    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }\n    string_append(decl,"]");\n    break;\n  case 'H':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }\n    string_append(decl,"]");\njoined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }\n    goto LAB_0017ca69;\n  case 'O':\n    pcVar2 = mangled + 1;\n    pcVar4 = "shared(";\n    goto LAB_0017ca69;\n  case 'P':\n    pcVar2 = mangled + 1;\n    mangled = mangled + 1;\n    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar2 = dlang_function_type(decl,mangled);\n    string_append(decl,"function");\n    return pcVar2;\n  case 'a':\n    pcVar2 = mangled + 1;\n    string_append(decl,"char");\n    break;\n  case 'b':\n    pcVar2 = mangled + 1;\n    string_append(decl,"bool");\n    break;\n  case 'c':\n    pcVar2 = mangled + 1;\n    string_append(decl,"creal");\n    break;\n  case 'd':\n    pcVar2 = mangled + 1;\n    string_append(decl,"double");\n    break;\n  case 'e':\n    pcVar2 = mangled + 1;\n    string_append(decl,"real");\n    break;\n  case 'f':\n    pcVar2 = mangled + 1;\n    string_append(decl,"float");\n    break;\n  case 'g':\n    pcVar2 = mangled + 1;\n    string_append(decl,"byte");\n    break;\n  case 'h':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ubyte");\n    break;\n  case 'i':\n    pcVar2 = mangled + 1;\n    string_append(decl,"int");\n    break;\n  case 'j':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ireal");\n    break;\n  case 'k':\n    pcVar2 = mangled + 1;\n    string_append(decl,"uint");\n    break;\n  case 'l':\n    pcVar2 = mangled + 1;\n    string_append(decl,"long");\n    break;\n  case 'm':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ulong");\n    break;\n  case 'n':\n    pcVar2 = mangled + 1;\n    string_append(decl,"none");\n    break;\n  case 'o':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ifloat");\n    break;\n  case 'p':\n    pcVar2 = mangled + 1;\n    string_append(decl,"idouble");\n    break;\n  case 'q':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cfloat");\n    break;\n  case 'r':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cdouble");\n    break;\n  case 's':\n    pcVar2 = mangled + 1;\n    string_append(decl,"short");\n    break;\n  case 't':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ushort");\n    break;\n  case 'u':\n    pcVar2 = mangled + 1;\n    string_append(decl,"wchar");\n    break;\n  case 'v':\n    pcVar2 = mangled + 1;\n    string_append(decl,"void");\n    break;\n  case 'w':\n    pcVar2 = mangled + 1;\n    string_append(decl,"dchar");\n    break;\n  case 'x':\n    pcVar2 = mangled + 1;\n    pcVar4 = "const(";\n    goto LAB_0017ca69;\n  case 'y':\n    pcVar2 = mangled + 1;\n    pcVar4 = "immutable(";\nLAB_0017ca69:\n    string_append(decl,pcVar4);\n    pcVar2 = dlang_type(decl,pcVar2);\nLAB_0017c9f9:\n    string_append(decl,")");\n    break;\n  case 'z':\n    if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }\n    if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }\n    string_append(decl,"ucent");\n    return mangled + 2;\n  }" switch (parenthesized_expression "(*mangled)" ( (pointer_expression "*mangled" * identifier) )) (compound_statement "{\n  case 'A':\n    pcVar2 = dlang_type(decl,mangled + 1);\n    string_append(decl,"[]");\n    break;\n  case 'B':\n    pcVar2 = dlang_number(mangled + 1,(long *)&type);\n    if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    string_append(decl,"Tuple!(");\n    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }\n    goto LAB_0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);\n    break;\n  case 'D':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type_modifiers(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }\n    goto joined_r0x0017cc10;\n  case 'G':\n    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }\n    string_append(decl,"]");\n    break;\n  case 'H':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }\n    string_append(decl,"]");\njoined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }\n    goto LAB_0017ca69;\n  case 'O':\n    pcVar2 = mangled + 1;\n    pcVar4 = "shared(";\n    goto LAB_0017ca69;\n  case 'P':\n    pcVar2 = mangled + 1;\n    mangled = mangled + 1;\n    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar2 = dlang_function_type(decl,mangled);\n    string_append(decl,"function");\n    return pcVar2;\n  case 'a':\n    pcVar2 = mangled + 1;\n    string_append(decl,"char");\n    break;\n  case 'b':\n    pcVar2 = mangled + 1;\n    string_append(decl,"bool");\n    break;\n  case 'c':\n    pcVar2 = mangled + 1;\n    string_append(decl,"creal");\n    break;\n  case 'd':\n    pcVar2 = mangled + 1;\n    string_append(decl,"double");\n    break;\n  case 'e':\n    pcVar2 = mangled + 1;\n    string_append(decl,"real");\n    break;\n  case 'f':\n    pcVar2 = mangled + 1;\n    string_append(decl,"float");\n    break;\n  case 'g':\n    pcVar2 = mangled + 1;\n    string_append(decl,"byte");\n    break;\n  case 'h':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ubyte");\n    break;\n  case 'i':\n    pcVar2 = mangled + 1;\n    string_append(decl,"int");\n    break;\n  case 'j':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ireal");\n    break;\n  case 'k':\n    pcVar2 = mangled + 1;\n    string_append(decl,"uint");\n    break;\n  case 'l':\n    pcVar2 = mangled + 1;\n    string_append(decl,"long");\n    break;\n  case 'm':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ulong");\n    break;\n  case 'n':\n    pcVar2 = mangled + 1;\n    string_append(decl,"none");\n    break;\n  case 'o':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ifloat");\n    break;\n  case 'p':\n    pcVar2 = mangled + 1;\n    string_append(decl,"idouble");\n    break;\n  case 'q':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cfloat");\n    break;\n  case 'r':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cdouble");\n    break;\n  case 's':\n    pcVar2 = mangled + 1;\n    string_append(decl,"short");\n    break;\n  case 't':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ushort");\n    break;\n  case 'u':\n    pcVar2 = mangled + 1;\n    string_append(decl,"wchar");\n    break;\n  case 'v':\n    pcVar2 = mangled + 1;\n    string_append(decl,"void");\n    break;\n  case 'w':\n    pcVar2 = mangled + 1;\n    string_append(decl,"dchar");\n    break;\n  case 'x':\n    pcVar2 = mangled + 1;\n    pcVar4 = "const(";\n    goto LAB_0017ca69;\n  case 'y':\n    pcVar2 = mangled + 1;\n    pcVar4 = "immutable(";\nLAB_0017ca69:\n    string_append(decl,pcVar4);\n    pcVar2 = dlang_type(decl,pcVar2);\nLAB_0017c9f9:\n    string_append(decl,")");\n    break;\n  case 'z':\n    if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }\n    if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }\n    string_append(decl,"ucent");\n    return mangled + 2;\n  }" { (case_statement "case 'A':\n    pcVar2 = dlang_type(decl,mangled + 1);\n    string_append(decl,"[]");\n    break;" case (char_literal "'A'" ' character ') : (expression_statement "pcVar2 = dlang_type(decl,mangled + 1);" (assignment_expression "pcVar2 = dlang_type(decl,mangled + 1)" identifier = (call_expression "dlang_type(decl,mangled + 1)" identifier (argument_list "(decl,mangled + 1)" ( identifier , (binary_expression "mangled + 1" identifier + number_literal) )))) ;) (expression_statement "string_append(decl,"[]");" (call_expression "string_append(decl,"[]")" identifier (argument_list "(decl,"[]")" ( identifier , (string_literal ""[]"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'B':\n    pcVar2 = dlang_number(mangled + 1,(long *)&type);\n    if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    string_append(decl,"Tuple!(");\n    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }\n    goto LAB_0017c9f9;" case (char_literal "'B'" ' character ') : (expression_statement "pcVar2 = dlang_number(mangled + 1,(long *)&type);" (assignment_expression "pcVar2 = dlang_number(mangled + 1,(long *)&type)" identifier = (call_expression "dlang_number(mangled + 1,(long *)&type)" identifier (argument_list "(mangled + 1,(long *)&type)" ( (binary_expression "mangled + 1" identifier + number_literal) , (cast_expression "(long *)&type" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&type" & identifier)) )))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "string_append(decl,"Tuple!(");" (call_expression "string_append(decl,"Tuple!(")" identifier (argument_list "(decl,"Tuple!(")" ( identifier , (string_literal ""Tuple!("" " string_content ") ))) ;) (while_statement "while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }" while (parenthesized_expression "(pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5)" ( (comma_expression "pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5" (assignment_expression "pcVar4 = type.b + -1" identifier = (binary_expression "type.b + -1" (field_expression "type.b" identifier . field_identifier) + number_literal)) , (comma_expression "bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5" (assignment_expression "bVar5 = type.b != (char *)0x0" identifier = (binary_expression "type.b != (char *)0x0" (field_expression "type.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) , (comma_expression "type.b = pcVar4, bVar5" (assignment_expression "type.b = pcVar4" (field_expression "type.b" identifier . field_identifier) = identifier) , identifier))) )) (compound_statement "{\n      pcVar2 = dlang_type(decl,pcVar2);\n      if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }\n      string_append(decl,", ");\n    }" { (expression_statement "pcVar2 = dlang_type(decl,pcVar2);" (assignment_expression "pcVar2 = dlang_type(decl,pcVar2)" identifier = (call_expression "dlang_type(decl,pcVar2)" identifier (argument_list "(decl,pcVar2)" ( identifier , identifier )))) ;) (if_statement "if (type.b == (char *)0x0) {\n        type.b = (char *)0xffffffff;\n        break;\n      }" if (parenthesized_expression "(type.b == (char *)0x0)" ( (binary_expression "type.b == (char *)0x0" (field_expression "type.b" identifier . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        type.b = (char *)0xffffffff;\n        break;\n      }" { (expression_statement "type.b = (char *)0xffffffff;" (assignment_expression "type.b = (char *)0xffffffff" (field_expression "type.b" identifier . field_identifier) = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "string_append(decl,", ");" (call_expression "string_append(decl,", ")" identifier (argument_list "(decl,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) (goto_statement "goto LAB_0017c9f9;" goto statement_identifier ;)) (case_statement "case 'C':" case (char_literal "'C'" ' character ') :) (case_statement "case 'E':" case (char_literal "'E'" ' character ') :) (case_statement "case 'I':" case (char_literal "'I'" ' character ') :) (case_statement "case 'S':" case (char_literal "'S'" ' character ') :) (case_statement "case 'T':\n    pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);\n    break;" case (char_literal "'T'" ' character ') : (expression_statement "pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);" (assignment_expression "pcVar2 = dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc)" identifier = (call_expression "dlang_parse_qualified(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc)" identifier (argument_list "(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc)" ( identifier , identifier , identifier )))) ;) (break_statement "break;" break ;)) (case_statement "case 'D':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type_modifiers(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }\n    goto joined_r0x0017cc10;" case (char_literal "'D'" ' character ') : (expression_statement "type.e = (char *)0x0;" (assignment_expression "type.e = (char *)0x0" (field_expression "type.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "type.p = (char *)0x0;" (assignment_expression "type.p = (char *)0x0" (field_expression "type.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "type.b = (char *)0x0;" (assignment_expression "type.b = (char *)0x0" (field_expression "type.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar2 = dlang_type_modifiers(&type,mangled + 1);" (assignment_expression "pcVar2 = dlang_type_modifiers(&type,mangled + 1)" identifier = (call_expression "dlang_type_modifiers(&type,mangled + 1)" identifier (argument_list "(&type,mangled + 1)" ( (pointer_expression "&type" & identifier) , (binary_expression "mangled + 1" identifier + number_literal) )))) ;) (if_statement "if (type.b == type.p) {\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }" if (parenthesized_expression "(type.b == type.p)" ( (binary_expression "type.b == type.p" (field_expression "type.b" identifier . field_identifier) == (field_expression "type.p" identifier . field_identifier)) )) (compound_statement "{\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n    }" { (expression_statement "pcVar2 = dlang_function_type(decl,pcVar2);" (assignment_expression "pcVar2 = dlang_function_type(decl,pcVar2)" identifier = (call_expression "dlang_function_type(decl,pcVar2)" identifier (argument_list "(decl,pcVar2)" ( identifier , identifier )))) ;) (expression_statement "string_append(decl,"delegate");" (call_expression "string_append(decl,"delegate")" identifier (argument_list "(decl,"delegate")" ( identifier , (string_literal ""delegate"" " string_content ") ))) ;) }) (else_clause "else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }" else (compound_statement "{\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_function_type(decl,pcVar2);\n      string_append(decl,"delegate");\n      string_appendn(decl,type.b,iVar3);\n    }" { (expression_statement "iVar3 = (int)type.p - (int)type.b;" (assignment_expression "iVar3 = (int)type.p - (int)type.b" identifier = (binary_expression "(int)type.p - (int)type.b" (cast_expression "(int)type.p" ( (type_descriptor "int" primitive_type) ) (field_expression "type.p" identifier . field_identifier)) - (cast_expression "(int)type.b" ( (type_descriptor "int" primitive_type) ) (field_expression "type.b" identifier . field_identifier)))) ;) (expression_statement "pcVar2 = dlang_function_type(decl,pcVar2);" (assignment_expression "pcVar2 = dlang_function_type(decl,pcVar2)" identifier = (call_expression "dlang_function_type(decl,pcVar2)" identifier (argument_list "(decl,pcVar2)" ( identifier , identifier )))) ;) (expression_statement "string_append(decl,"delegate");" (call_expression "string_append(decl,"delegate")" identifier (argument_list "(decl,"delegate")" ( identifier , (string_literal ""delegate"" " string_content ") ))) ;) (expression_statement "string_appendn(decl,type.b,iVar3);" (call_expression "string_appendn(decl,type.b,iVar3)" identifier (argument_list "(decl,type.b,iVar3)" ( identifier , (field_expression "type.b" identifier . field_identifier) , identifier ))) ;) }))) (goto_statement "goto joined_r0x0017cc10;" goto statement_identifier ;)) (case_statement "case 'G':\n    if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }\n    string_append(decl,"]");\n    break;" case (char_literal "'G'" ' character ') : (if_statement "if ((_sch_istable[(byte)mangled[1]] & 4) == 0) {\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }\n    else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }" if (parenthesized_expression "((_sch_istable[(byte)mangled[1]] & 4) == 0)" ( (binary_expression "(_sch_istable[(byte)mangled[1]] & 4) == 0" (parenthesized_expression "(_sch_istable[(byte)mangled[1]] & 4)" ( (binary_expression "_sch_istable[(byte)mangled[1]] & 4" (subscript_expression "_sch_istable[(byte)mangled[1]]" identifier [ (cast_expression "(byte)mangled[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "mangled[1]" identifier [ number_literal ])) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar2 = dlang_type(decl,mangled + 1);\n      string_append(decl,"[");\n    }" { (expression_statement "pcVar2 = dlang_type(decl,mangled + 1);" (assignment_expression "pcVar2 = dlang_type(decl,mangled + 1)" identifier = (call_expression "dlang_type(decl,mangled + 1)" identifier (argument_list "(decl,mangled + 1)" ( identifier , (binary_expression "mangled + 1" identifier + number_literal) )))) ;) (expression_statement "string_append(decl,"[");" (call_expression "string_append(decl,"[")" identifier (argument_list "(decl,"[")" ( identifier , (string_literal ""["" " string_content ") ))) ;) }) (else_clause "else {\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }" else (compound_statement "{\n      pbVar1 = (byte *)(mangled + 2);\n      do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);\n      pcVar2 = dlang_type(decl,(char *)mangled_00);\n      string_append(decl,"[");\n      if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }\n    }" { (expression_statement "pbVar1 = (byte *)(mangled + 2);" (assignment_expression "pbVar1 = (byte *)(mangled + 2)" identifier = (cast_expression "(byte *)(mangled + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(mangled + 2)" ( (binary_expression "mangled + 2" identifier + number_literal) )))) ;) (do_statement "do {\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      } while ((_sch_istable[*mangled_00] & 4) != 0);" do (compound_statement "{\n        mangled_00 = pbVar1;\n        pbVar1 = mangled_00 + 1;\n      }" { (expression_statement "mangled_00 = pbVar1;" (assignment_expression "mangled_00 = pbVar1" identifier = identifier) ;) (expression_statement "pbVar1 = mangled_00 + 1;" (assignment_expression "pbVar1 = mangled_00 + 1" identifier = (binary_expression "mangled_00 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((_sch_istable[*mangled_00] & 4) != 0)" ( (binary_expression "(_sch_istable[*mangled_00] & 4) != 0" (parenthesized_expression "(_sch_istable[*mangled_00] & 4)" ( (binary_expression "_sch_istable[*mangled_00] & 4" (subscript_expression "_sch_istable[*mangled_00]" identifier [ (pointer_expression "*mangled_00" * identifier) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "pcVar2 = dlang_type(decl,(char *)mangled_00);" (assignment_expression "pcVar2 = dlang_type(decl,(char *)mangled_00)" identifier = (call_expression "dlang_type(decl,(char *)mangled_00)" identifier (argument_list "(decl,(char *)mangled_00)" ( identifier , (cast_expression "(char *)mangled_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "string_append(decl,"[");" (call_expression "string_append(decl,"[")" identifier (argument_list "(decl,"[")" ( identifier , (string_literal ""["" " string_content ") ))) ;) (if_statement "if (mangled_00 + ~(uint)mangled != (byte *)0x0) {\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }" if (parenthesized_expression "(mangled_00 + ~(uint)mangled != (byte *)0x0)" ( (binary_expression "mangled_00 + ~(uint)mangled != (byte *)0x0" (binary_expression "mangled_00 + ~(uint)mangled" identifier + (unary_expression "~(uint)mangled" ~ (cast_expression "(uint)mangled" ( (type_descriptor "uint" type_identifier) ) identifier))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));\n      }" { (expression_statement "string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled));" (call_expression "string_appendn(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled))" identifier (argument_list "(decl,mangled + 1,(int)(mangled_00 + ~(uint)mangled))" ( identifier , (binary_expression "mangled + 1" identifier + number_literal) , (cast_expression "(int)(mangled_00 + ~(uint)mangled)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(mangled_00 + ~(uint)mangled)" ( (binary_expression "mangled_00 + ~(uint)mangled" identifier + (unary_expression "~(uint)mangled" ~ (cast_expression "(uint)mangled" ( (type_descriptor "uint" type_identifier) ) identifier))) ))) ))) ;) })) }))) (expression_statement "string_append(decl,"]");" (call_expression "string_append(decl,"]")" identifier (argument_list "(decl,"]")" ( identifier , (string_literal ""]"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'H':\n    type.e = (char *)0x0;\n    type.p = (char *)0x0;\n    type.b = (char *)0x0;\n    pcVar2 = dlang_type(&type,mangled + 1);\n    if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }\n    string_append(decl,"]");\njoined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }\n    break;" case (char_literal "'H'" ' character ') : (expression_statement "type.e = (char *)0x0;" (assignment_expression "type.e = (char *)0x0" (field_expression "type.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "type.p = (char *)0x0;" (assignment_expression "type.p = (char *)0x0" (field_expression "type.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "type.b = (char *)0x0;" (assignment_expression "type.b = (char *)0x0" (field_expression "type.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar2 = dlang_type(&type,mangled + 1);" (assignment_expression "pcVar2 = dlang_type(&type,mangled + 1)" identifier = (call_expression "dlang_type(&type,mangled + 1)" identifier (argument_list "(&type,mangled + 1)" ( (pointer_expression "&type" & identifier) , (binary_expression "mangled + 1" identifier + number_literal) )))) ;) (if_statement "if (type.b == type.p) {\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }\n    else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }" if (parenthesized_expression "(type.b == type.p)" ( (binary_expression "type.b == type.p" (field_expression "type.b" identifier . field_identifier) == (field_expression "type.p" identifier . field_identifier)) )) (compound_statement "{\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n    }" { (expression_statement "pcVar2 = dlang_type(decl,pcVar2);" (assignment_expression "pcVar2 = dlang_type(decl,pcVar2)" identifier = (call_expression "dlang_type(decl,pcVar2)" identifier (argument_list "(decl,pcVar2)" ( identifier , identifier )))) ;) (expression_statement "string_append(decl,"[");" (call_expression "string_append(decl,"[")" identifier (argument_list "(decl,"[")" ( identifier , (string_literal ""["" " string_content ") ))) ;) }) (else_clause "else {\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }" else (compound_statement "{\n      iVar3 = (int)type.p - (int)type.b;\n      pcVar2 = dlang_type(decl,pcVar2);\n      string_append(decl,"[");\n      string_appendn(decl,type.b,iVar3);\n    }" { (expression_statement "iVar3 = (int)type.p - (int)type.b;" (assignment_expression "iVar3 = (int)type.p - (int)type.b" identifier = (binary_expression "(int)type.p - (int)type.b" (cast_expression "(int)type.p" ( (type_descriptor "int" primitive_type) ) (field_expression "type.p" identifier . field_identifier)) - (cast_expression "(int)type.b" ( (type_descriptor "int" primitive_type) ) (field_expression "type.b" identifier . field_identifier)))) ;) (expression_statement "pcVar2 = dlang_type(decl,pcVar2);" (assignment_expression "pcVar2 = dlang_type(decl,pcVar2)" identifier = (call_expression "dlang_type(decl,pcVar2)" identifier (argument_list "(decl,pcVar2)" ( identifier , identifier )))) ;) (expression_statement "string_append(decl,"[");" (call_expression "string_append(decl,"[")" identifier (argument_list "(decl,"[")" ( identifier , (string_literal ""["" " string_content ") ))) ;) (expression_statement "string_appendn(decl,type.b,iVar3);" (call_expression "string_appendn(decl,type.b,iVar3)" identifier (argument_list "(decl,type.b,iVar3)" ( identifier , (field_expression "type.b" identifier . field_identifier) , identifier ))) ;) }))) (expression_statement "string_append(decl,"]");" (call_expression "string_append(decl,"]")" identifier (argument_list "(decl,"]")" ( identifier , (string_literal ""]"" " string_content ") ))) ;) (labeled_statement "joined_r0x0017cc10:\n    if (type.b != (char *)0x0) {\n      free(type.b);\n    }" statement_identifier : (if_statement "if (type.b != (char *)0x0) {\n      free(type.b);\n    }" if (parenthesized_expression "(type.b != (char *)0x0)" ( (binary_expression "type.b != (char *)0x0" (field_expression "type.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(type.b);\n    }" { (expression_statement "free(type.b);" (call_expression "free(type.b)" identifier (argument_list "(type.b)" ( (field_expression "type.b" identifier . field_identifier) ))) ;) }))) (break_statement "break;" break ;)) (case_statement "default:\n    return (char *)0x0;" default : (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'N':\n    if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }\n    goto LAB_0017ca69;" case (char_literal "'N'" ' character ') : (if_statement "if (mangled[1] == 'g') {\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }\n    else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }" if (parenthesized_expression "(mangled[1] == 'g')" ( (binary_expression "mangled[1] == 'g'" (subscript_expression "mangled[1]" identifier [ number_literal ]) == (char_literal "'g'" ' character ')) )) (compound_statement "{\n      pcVar2 = mangled + 2;\n      pcVar4 = "inout(";\n    }" { (expression_statement "pcVar2 = mangled + 2;" (assignment_expression "pcVar2 = mangled + 2" identifier = (binary_expression "mangled + 2" identifier + number_literal)) ;) (expression_statement "pcVar4 = "inout(";" (assignment_expression "pcVar4 = "inout("" identifier = (string_literal ""inout("" " string_content ")) ;) }) (else_clause "else {\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }" else (compound_statement "{\n      if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }\n      pcVar2 = mangled + 2;\n      pcVar4 = "__vector(";\n    }" { (if_statement "if (mangled[1] != 'h') {\n        return (char *)0x0;\n      }" if (parenthesized_expression "(mangled[1] != 'h')" ( (binary_expression "mangled[1] != 'h'" (subscript_expression "mangled[1]" identifier [ number_literal ]) != (char_literal "'h'" ' character ')) )) (compound_statement "{\n        return (char *)0x0;\n      }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar2 = mangled + 2;" (assignment_expression "pcVar2 = mangled + 2" identifier = (binary_expression "mangled + 2" identifier + number_literal)) ;) (expression_statement "pcVar4 = "__vector(";" (assignment_expression "pcVar4 = "__vector("" identifier = (string_literal ""__vector("" " string_content ")) ;) }))) (goto_statement "goto LAB_0017ca69;" goto statement_identifier ;)) (case_statement "case 'O':\n    pcVar2 = mangled + 1;\n    pcVar4 = "shared(";\n    goto LAB_0017ca69;" case (char_literal "'O'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "pcVar4 = "shared(";" (assignment_expression "pcVar4 = "shared("" identifier = (string_literal ""shared("" " string_content ")) ;) (goto_statement "goto LAB_0017ca69;" goto statement_identifier ;)) (case_statement "case 'P':\n    pcVar2 = mangled + 1;\n    mangled = mangled + 1;\n    if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }" case (char_literal "'P'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "mangled = mangled + 1;" (assignment_expression "mangled = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (if_statement "if ((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }" if (parenthesized_expression "((0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0))" ( (binary_expression "(0x13 < (byte)(*pcVar2 + 0xbaU)) || ((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)" (parenthesized_expression "(0x13 < (byte)(*pcVar2 + 0xbaU))" ( (binary_expression "0x13 < (byte)(*pcVar2 + 0xbaU)" number_literal < (call_expression "(byte)(*pcVar2 + 0xbaU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*pcVar2 + 0xbaU)" ( (binary_expression "*pcVar2 + 0xbaU" (pointer_expression "*pcVar2" * identifier) + number_literal) )))) )) || (parenthesized_expression "((1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0)" ( (binary_expression "(1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U) == 0" (parenthesized_expression "(1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U)" ( (binary_expression "1 << (*pcVar2 + 0xbaU & 0x1f) & 0xb9001U" (binary_expression "1 << (*pcVar2 + 0xbaU & 0x1f)" number_literal << (parenthesized_expression "(*pcVar2 + 0xbaU & 0x1f)" ( (binary_expression "*pcVar2 + 0xbaU & 0x1f" (binary_expression "*pcVar2 + 0xbaU" (pointer_expression "*pcVar2" * identifier) + number_literal) & number_literal) ))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pcVar2 = dlang_type(decl,mangled);\n      string_append(decl,"*");\n      return pcVar2;\n    }" { (expression_statement "pcVar2 = dlang_type(decl,mangled);" (assignment_expression "pcVar2 = dlang_type(decl,mangled)" identifier = (call_expression "dlang_type(decl,mangled)" identifier (argument_list "(decl,mangled)" ( identifier , identifier )))) ;) (expression_statement "string_append(decl,"*");" (call_expression "string_append(decl,"*")" identifier (argument_list "(decl,"*")" ( identifier , (string_literal ""*"" " string_content ") ))) ;) (return_statement "return pcVar2;" return identifier ;) }))) (case_statement "case 'F':" case (char_literal "'F'" ' character ') :) (case_statement "case 'R':" case (char_literal "'R'" ' character ') :) (case_statement "case 'U':" case (char_literal "'U'" ' character ') :) (case_statement "case 'V':" case (char_literal "'V'" ' character ') :) (case_statement "case 'W':" case (char_literal "'W'" ' character ') :) (case_statement "case 'Y':\n    pcVar2 = dlang_function_type(decl,mangled);\n    string_append(decl,"function");\n    return pcVar2;" case (char_literal "'Y'" ' character ') : (expression_statement "pcVar2 = dlang_function_type(decl,mangled);" (assignment_expression "pcVar2 = dlang_function_type(decl,mangled)" identifier = (call_expression "dlang_function_type(decl,mangled)" identifier (argument_list "(decl,mangled)" ( identifier , identifier )))) ;) (expression_statement "string_append(decl,"function");" (call_expression "string_append(decl,"function")" identifier (argument_list "(decl,"function")" ( identifier , (string_literal ""function"" " string_content ") ))) ;) (return_statement "return pcVar2;" return identifier ;)) (case_statement "case 'a':\n    pcVar2 = mangled + 1;\n    string_append(decl,"char");\n    break;" case (char_literal "'a'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"char");" (call_expression "string_append(decl,"char")" identifier (argument_list "(decl,"char")" ( identifier , (string_literal ""char"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'b':\n    pcVar2 = mangled + 1;\n    string_append(decl,"bool");\n    break;" case (char_literal "'b'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"bool");" (call_expression "string_append(decl,"bool")" identifier (argument_list "(decl,"bool")" ( identifier , (string_literal ""bool"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'c':\n    pcVar2 = mangled + 1;\n    string_append(decl,"creal");\n    break;" case (char_literal "'c'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"creal");" (call_expression "string_append(decl,"creal")" identifier (argument_list "(decl,"creal")" ( identifier , (string_literal ""creal"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'd':\n    pcVar2 = mangled + 1;\n    string_append(decl,"double");\n    break;" case (char_literal "'d'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"double");" (call_expression "string_append(decl,"double")" identifier (argument_list "(decl,"double")" ( identifier , (string_literal ""double"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'e':\n    pcVar2 = mangled + 1;\n    string_append(decl,"real");\n    break;" case (char_literal "'e'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"real");" (call_expression "string_append(decl,"real")" identifier (argument_list "(decl,"real")" ( identifier , (string_literal ""real"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'f':\n    pcVar2 = mangled + 1;\n    string_append(decl,"float");\n    break;" case (char_literal "'f'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"float");" (call_expression "string_append(decl,"float")" identifier (argument_list "(decl,"float")" ( identifier , (string_literal ""float"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'g':\n    pcVar2 = mangled + 1;\n    string_append(decl,"byte");\n    break;" case (char_literal "'g'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"byte");" (call_expression "string_append(decl,"byte")" identifier (argument_list "(decl,"byte")" ( identifier , (string_literal ""byte"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'h':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ubyte");\n    break;" case (char_literal "'h'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"ubyte");" (call_expression "string_append(decl,"ubyte")" identifier (argument_list "(decl,"ubyte")" ( identifier , (string_literal ""ubyte"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'i':\n    pcVar2 = mangled + 1;\n    string_append(decl,"int");\n    break;" case (char_literal "'i'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"int");" (call_expression "string_append(decl,"int")" identifier (argument_list "(decl,"int")" ( identifier , (string_literal ""int"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'j':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ireal");\n    break;" case (char_literal "'j'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"ireal");" (call_expression "string_append(decl,"ireal")" identifier (argument_list "(decl,"ireal")" ( identifier , (string_literal ""ireal"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'k':\n    pcVar2 = mangled + 1;\n    string_append(decl,"uint");\n    break;" case (char_literal "'k'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"uint");" (call_expression "string_append(decl,"uint")" identifier (argument_list "(decl,"uint")" ( identifier , (string_literal ""uint"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'l':\n    pcVar2 = mangled + 1;\n    string_append(decl,"long");\n    break;" case (char_literal "'l'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"long");" (call_expression "string_append(decl,"long")" identifier (argument_list "(decl,"long")" ( identifier , (string_literal ""long"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'm':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ulong");\n    break;" case (char_literal "'m'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"ulong");" (call_expression "string_append(decl,"ulong")" identifier (argument_list "(decl,"ulong")" ( identifier , (string_literal ""ulong"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'n':\n    pcVar2 = mangled + 1;\n    string_append(decl,"none");\n    break;" case (char_literal "'n'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"none");" (call_expression "string_append(decl,"none")" identifier (argument_list "(decl,"none")" ( identifier , (string_literal ""none"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'o':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ifloat");\n    break;" case (char_literal "'o'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"ifloat");" (call_expression "string_append(decl,"ifloat")" identifier (argument_list "(decl,"ifloat")" ( identifier , (string_literal ""ifloat"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'p':\n    pcVar2 = mangled + 1;\n    string_append(decl,"idouble");\n    break;" case (char_literal "'p'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"idouble");" (call_expression "string_append(decl,"idouble")" identifier (argument_list "(decl,"idouble")" ( identifier , (string_literal ""idouble"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'q':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cfloat");\n    break;" case (char_literal "'q'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"cfloat");" (call_expression "string_append(decl,"cfloat")" identifier (argument_list "(decl,"cfloat")" ( identifier , (string_literal ""cfloat"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'r':\n    pcVar2 = mangled + 1;\n    string_append(decl,"cdouble");\n    break;" case (char_literal "'r'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"cdouble");" (call_expression "string_append(decl,"cdouble")" identifier (argument_list "(decl,"cdouble")" ( identifier , (string_literal ""cdouble"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 's':\n    pcVar2 = mangled + 1;\n    string_append(decl,"short");\n    break;" case (char_literal "'s'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"short");" (call_expression "string_append(decl,"short")" identifier (argument_list "(decl,"short")" ( identifier , (string_literal ""short"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 't':\n    pcVar2 = mangled + 1;\n    string_append(decl,"ushort");\n    break;" case (char_literal "'t'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"ushort");" (call_expression "string_append(decl,"ushort")" identifier (argument_list "(decl,"ushort")" ( identifier , (string_literal ""ushort"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'u':\n    pcVar2 = mangled + 1;\n    string_append(decl,"wchar");\n    break;" case (char_literal "'u'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"wchar");" (call_expression "string_append(decl,"wchar")" identifier (argument_list "(decl,"wchar")" ( identifier , (string_literal ""wchar"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'v':\n    pcVar2 = mangled + 1;\n    string_append(decl,"void");\n    break;" case (char_literal "'v'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"void");" (call_expression "string_append(decl,"void")" identifier (argument_list "(decl,"void")" ( identifier , (string_literal ""void"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'w':\n    pcVar2 = mangled + 1;\n    string_append(decl,"dchar");\n    break;" case (char_literal "'w'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"dchar");" (call_expression "string_append(decl,"dchar")" identifier (argument_list "(decl,"dchar")" ( identifier , (string_literal ""dchar"" " string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case 'x':\n    pcVar2 = mangled + 1;\n    pcVar4 = "const(";\n    goto LAB_0017ca69;" case (char_literal "'x'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "pcVar4 = "const(";" (assignment_expression "pcVar4 = "const("" identifier = (string_literal ""const("" " string_content ")) ;) (goto_statement "goto LAB_0017ca69;" goto statement_identifier ;)) (case_statement "case 'y':\n    pcVar2 = mangled + 1;\n    pcVar4 = "immutable(";\nLAB_0017ca69:\n    string_append(decl,pcVar4);\n    pcVar2 = dlang_type(decl,pcVar2);\nLAB_0017c9f9:\n    string_append(decl,")");\n    break;" case (char_literal "'y'" ' character ') : (expression_statement "pcVar2 = mangled + 1;" (assignment_expression "pcVar2 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "pcVar4 = "immutable(";" (assignment_expression "pcVar4 = "immutable("" identifier = (string_literal ""immutable("" " string_content ")) ;) (labeled_statement "LAB_0017ca69:\n    string_append(decl,pcVar4);" statement_identifier : (expression_statement "string_append(decl,pcVar4);" (call_expression "string_append(decl,pcVar4)" identifier (argument_list "(decl,pcVar4)" ( identifier , identifier ))) ;)) (expression_statement "pcVar2 = dlang_type(decl,pcVar2);" (assignment_expression "pcVar2 = dlang_type(decl,pcVar2)" identifier = (call_expression "dlang_type(decl,pcVar2)" identifier (argument_list "(decl,pcVar2)" ( identifier , identifier )))) ;) (labeled_statement "LAB_0017c9f9:\n    string_append(decl,")");" statement_identifier : (expression_statement "string_append(decl,")");" (call_expression "string_append(decl,")")" identifier (argument_list "(decl,")")" ( identifier , (string_literal "")"" " string_content ") ))) ;)) (break_statement "break;" break ;)) (case_statement "case 'z':\n    if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }\n    if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }\n    string_append(decl,"ucent");\n    return mangled + 2;" case (char_literal "'z'" ' character ') : (if_statement "if (mangled[1] == 'i') {\n      string_append(decl,"cent");\n      return mangled + 2;\n    }" if (parenthesized_expression "(mangled[1] == 'i')" ( (binary_expression "mangled[1] == 'i'" (subscript_expression "mangled[1]" identifier [ number_literal ]) == (char_literal "'i'" ' character ')) )) (compound_statement "{\n      string_append(decl,"cent");\n      return mangled + 2;\n    }" { (expression_statement "string_append(decl,"cent");" (call_expression "string_append(decl,"cent")" identifier (argument_list "(decl,"cent")" ( identifier , (string_literal ""cent"" " string_content ") ))) ;) (return_statement "return mangled + 2;" return (binary_expression "mangled + 2" identifier + number_literal) ;) })) (if_statement "if (mangled[1] != 'k') {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(mangled[1] != 'k')" ( (binary_expression "mangled[1] != 'k'" (subscript_expression "mangled[1]" identifier [ number_literal ]) != (char_literal "'k'" ' character ')) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "string_append(decl,"ucent");" (call_expression "string_append(decl,"ucent")" identifier (argument_list "(decl,"ucent")" ( identifier , (string_literal ""ucent"" " string_content ") ))) ;) (return_statement "return mangled + 2;" return (binary_expression "mangled + 2" identifier + number_literal) ;)) })) (return_statement "return pcVar2;" return identifier ;) })))
(translation_unit "char * __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}\n\n" (function_definition "char * __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_0017c870(undefined4 param_1,char *param_2)" identifier (parameter_list "(undefined4 param_1,char *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int iStack_28;" primitive_type identifier ;) (if_statement "if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (char *)0x0;\n  }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*param_2 == '\0') {\n    return (char *)0x0;\n  }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (char *)0x0;\n  }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (switch_statement "switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }" switch (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (compound_statement "{\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }" { (case_statement "case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;" case (char_literal "'A'" ' character ') : (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;" case (char_literal "'B'" ' character ') : (expression_statement "param_2 = (char *)FUN_0017b740();" (assignment_expression "param_2 = (char *)FUN_0017b740()" identifier = (cast_expression "(char *)FUN_0017b740()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b740()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (while_statement "while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }" while (parenthesized_expression "((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)))" ( (parenthesized_expression "(iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))" ( (binary_expression "iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)" (binary_expression "iStack_28 != 0" identifier != number_literal) && (parenthesized_expression "(param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)" ( (comma_expression "param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) , (binary_expression "iStack_28 + -1 != 0" (binary_expression "iStack_28 + -1" identifier + number_literal) != number_literal)) ))) )) )) (compound_statement "{\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (expression_statement "iStack_28 = iStack_28 + -1;" (assignment_expression "iStack_28 = iStack_28 + -1" identifier = (binary_expression "iStack_28 + -1" identifier + number_literal)) ;) })) (goto_statement "goto code_r0x0017c9f9;" goto statement_identifier ;)) (case_statement "case 'C':" case (char_literal "'C'" ' character ') :) (case_statement "case 'E':" case (char_literal "'E'" ' character ') :) (case_statement "case 'I':" case (char_literal "'I'" ' character ') :) (case_statement "case 'S':" case (char_literal "'S'" ' character ') :) (case_statement "case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;" case (char_literal "'T'" ' character ') : (expression_statement "param_2 = (char *)FUN_0017d830();" (assignment_expression "param_2 = (char *)FUN_0017d830()" identifier = (cast_expression "(char *)FUN_0017d830()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d830()" identifier (argument_list "()" ( ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;" case (char_literal "'D'" ' character ') : (expression_statement "FUN_0017b990();" (call_expression "FUN_0017b990()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = (char *)FUN_0017c690();" (assignment_expression "param_2 = (char *)FUN_0017c690()" identifier = (cast_expression "(char *)FUN_0017c690()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c690()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;" case (char_literal "'G'" ' character ') : (if_statement "if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" if (parenthesized_expression "(((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0)" ( (binary_expression "((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)(byte)param_2[1] * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)(byte)param_2[1] * 2" (cast_expression "(uint)(byte)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)param_2[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) * number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }" { (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" else (compound_statement "{\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" { (expression_statement "pbVar4 = (byte *)(param_2 + 2);" (assignment_expression "pbVar4 = (byte *)(param_2 + 2)" identifier = (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) ;) (do_statement "do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);" do (compound_statement "{\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      }" { (expression_statement "pbVar1 = pbVar4 + ~(uint)param_2;" (assignment_expression "pbVar1 = pbVar4 + ~(uint)param_2" identifier = (binary_expression "pbVar4 + ~(uint)param_2" identifier + (unary_expression "~(uint)param_2" ~ (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0)" ( (binary_expression "((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0" (parenthesized_expression "((&DAT_0023a160)[(uint)bVar2 * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)bVar2 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)bVar2 * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (if_statement "if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }" if (parenthesized_expression "(pbVar1 != (byte *)0x0)" ( (binary_expression "pbVar1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_0017bbd0();\n      }" { (expression_statement "FUN_0017bbd0();" (call_expression "FUN_0017bbd0()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;" case (char_literal "'H'" ' character ') : (expression_statement "FUN_0017c870();" (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "default:\n    return (char *)0x0;" default : (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;" case (char_literal "'N'" ' character ') : (if_statement "if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "((param_2[1] != 'g') && (param_2[1] != 'h'))" ( (binary_expression "(param_2[1] != 'g') && (param_2[1] != 'h')" (parenthesized_expression "(param_2[1] != 'g')" ( (binary_expression "param_2[1] != 'g'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'g'" ' character ')) )) && (parenthesized_expression "(param_2[1] != 'h')" ( (binary_expression "param_2[1] != 'h'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'h'" ' character ')) ))) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (goto_statement "goto code_r0x0017ca69;" goto statement_identifier ;)) (case_statement "case 'O':\n    goto code_r0x0017ca69;" case (char_literal "'O'" ' character ') : (goto_statement "goto code_r0x0017ca69;" goto statement_identifier ;)) (case_statement "case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" case (char_literal "'P'" ' character ') : (if_statement "if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" if (parenthesized_expression "((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))" ( (binary_expression "(0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0)" (parenthesized_expression "(0x13 < (byte)(param_2[1] + 0xbaU))" ( (binary_expression "0x13 < (byte)(param_2[1] + 0xbaU)" number_literal < (call_expression "(byte)(param_2[1] + 0xbaU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2[1] + 0xbaU)" ( (binary_expression "param_2[1] + 0xbaU" (subscript_expression "param_2[1]" identifier [ number_literal ]) + number_literal) )))) )) || (parenthesized_expression "((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0)" ( (binary_expression "(1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0" (parenthesized_expression "(1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U)" ( (binary_expression "1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U" (binary_expression "1 << (param_2[1] + 0xbaU & 0x1f)" number_literal << (parenthesized_expression "(param_2[1] + 0xbaU & 0x1f)" ( (binary_expression "param_2[1] + 0xbaU & 0x1f" (binary_expression "param_2[1] + 0xbaU" (subscript_expression "param_2[1]" identifier [ number_literal ]) + number_literal) & number_literal) ))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" { (expression_statement "pcVar3 = (char *)FUN_0017c870();" (assignment_expression "pcVar3 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return pcVar3;" return identifier ;) }))) (case_statement "case 'F':" case (char_literal "'F'" ' character ') :) (case_statement "case 'R':" case (char_literal "'R'" ' character ') :) (case_statement "case 'U':" case (char_literal "'U'" ' character ') :) (case_statement "case 'V':" case (char_literal "'V'" ' character ') :) (case_statement "case 'W':" case (char_literal "'W'" ' character ') :) (case_statement "case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;" case (char_literal "'Y'" ' character ') : (expression_statement "pcVar3 = (char *)FUN_0017c690();" (assignment_expression "pcVar3 = (char *)FUN_0017c690()" identifier = (cast_expression "(char *)FUN_0017c690()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c690()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return pcVar3;" return identifier ;)) (case_statement "case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'a'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'b'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'c'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'d'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'e'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'f'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'g'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'h'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'i'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'j'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'k'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'l'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'m'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'n'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'o'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'p'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'q'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'r'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'s'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'t'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'u'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'v'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" case (char_literal "'w'" ' character ') : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 'x':\n    goto code_r0x0017ca69;" case (char_literal "'x'" ' character ') : (goto_statement "goto code_r0x0017ca69;" goto statement_identifier ;)) (case_statement "case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;" case (char_literal "'y'" ' character ') : (labeled_statement "code_r0x0017ca69:\n    FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" identifier = (cast_expression "(char *)FUN_0017c870()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) (labeled_statement "code_r0x0017c9f9:\n    FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) (break_statement "break;" break ;)) (case_statement "case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;" case (char_literal "'z'" ' character ') : (if_statement "if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }" if (parenthesized_expression "(param_2[1] == 'i')" ( (binary_expression "param_2[1] == 'i'" (subscript_expression "param_2[1]" identifier [ number_literal ]) == (char_literal "'i'" ' character ')) )) (compound_statement "{\n      FUN_0017b850();\n      return param_2 + 2;\n    }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_2 + 2;" return (binary_expression "param_2 + 2" identifier + number_literal) ;) })) (if_statement "if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(param_2[1] != 'k')" ( (binary_expression "param_2[1] != 'k'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'k'" ' character ')) )) (compound_statement "{\n      return (char *)0x0;\n    }" { (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_2 + 2;" return (binary_expression "param_2 + 2" identifier + number_literal) ;)) })) (return_statement "return param_2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (switch_statement switch (parenthesized_expression ( (pointer_expression * IDENT) )) (compound_statement { (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) , (binary_expression (binary_expression IDENT + LIT) != LIT)) ))) )) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) * LIT) ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ]) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement default : (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' character ')) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) & LIT) ))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return IDENT ;) }))) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return IDENT ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (break_statement break ;)) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (binary_expression IDENT + LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (binary_expression IDENT + LIT) ;)) })) (return_statement return IDENT ;) })))
(function_definition "char * __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}" (primitive_type "char") (pointer_declarator "* __regparm3 FUN_0017c870(undefined4 param_1,char *param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0017c870(undefined4 param_1,char *param_2)" (identifier "FUN_0017c870") (parameter_list "(undefined4 param_1,char *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  int iStack_28;\n  \n  if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }\n  if (*param_2 == '\0') {\n    return (char *)0x0;\n  }\n  switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }\n  return param_2;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "int iStack_28;" (primitive_type "int") (identifier "iStack_28") (; ";")) (if_statement "if (param_2 == (char *)0x0) {\n    return (char *)0x0;\n  }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return (char *)0x0;\n  }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (*param_2 == '\0') {\n    return (char *)0x0;\n  }" (if "if") (parenthesized_expression "(*param_2 == '\0')" (( "(") (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return (char *)0x0;\n  }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (switch_statement "switch(*param_2) {\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }" (switch "switch") (parenthesized_expression "(*param_2)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")) (compound_statement "{\n  case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;\n  case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;\n  case 'C':\n  case 'E':\n  case 'I':\n  case 'S':\n  case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;\n  case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;\n  case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;\n  case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;\n  default:\n    return (char *)0x0;\n  case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;\n  case 'O':\n    goto code_r0x0017ca69;\n  case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }\n  case 'F':\n  case 'R':\n  case 'U':\n  case 'V':\n  case 'W':\n  case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;\n  case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;\n  case 'x':\n    goto code_r0x0017ca69;\n  case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;\n  case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;\n  }" ({ "{") (case_statement "case 'A':\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'A'" (' "'") (character "A") (' "'")) (: ":") (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'B':\n    param_2 = (char *)FUN_0017b740();\n    if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }\n    goto code_r0x0017c9f9;" (case "case") (char_literal "'B'" (' "'") (character "B") (' "'")) (: ":") (expression_statement "param_2 = (char *)FUN_0017b740();" (assignment_expression "param_2 = (char *)FUN_0017b740()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017b740()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b740()" (identifier "FUN_0017b740") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (param_2 == (char *)0x0) {\n      return (char *)0x0;\n    }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return (char *)0x0;\n    }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (while_statement "while ((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))) {\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }" (while "while") (parenthesized_expression "((iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)))" (( "(") (parenthesized_expression "(iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0))" (( "(") (binary_expression "iStack_28 != 0 && (param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)" (binary_expression "iStack_28 != 0" (identifier "iStack_28") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0)" (( "(") (comma_expression "param_2 = (char *)FUN_0017c870(), iStack_28 + -1 != 0" (assignment_expression "param_2 = (char *)FUN_0017c870()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "iStack_28 + -1 != 0" (binary_expression "iStack_28 + -1" (identifier "iStack_28") (+ "+") (number_literal "-1")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n      FUN_0017b850();\n      iStack_28 = iStack_28 + -1;\n    }" ({ "{") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iStack_28 = iStack_28 + -1;" (assignment_expression "iStack_28 = iStack_28 + -1" (identifier "iStack_28") (= "=") (binary_expression "iStack_28 + -1" (identifier "iStack_28") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (goto_statement "goto code_r0x0017c9f9;" (goto "goto") (statement_identifier "code_r0x0017c9f9") (; ";"))) (case_statement "case 'C':" (case "case") (char_literal "'C'" (' "'") (character "C") (' "'")) (: ":")) (case_statement "case 'E':" (case "case") (char_literal "'E'" (' "'") (character "E") (' "'")) (: ":")) (case_statement "case 'I':" (case "case") (char_literal "'I'" (' "'") (character "I") (' "'")) (: ":")) (case_statement "case 'S':" (case "case") (char_literal "'S'" (' "'") (character "S") (' "'")) (: ":")) (case_statement "case 'T':\n    param_2 = (char *)FUN_0017d830();\n    break;" (case "case") (char_literal "'T'" (' "'") (character "T") (' "'")) (: ":") (expression_statement "param_2 = (char *)FUN_0017d830();" (assignment_expression "param_2 = (char *)FUN_0017d830()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017d830()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d830()" (identifier "FUN_0017d830") (argument_list "()" (( "(") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'D':\n    FUN_0017b990();\n    param_2 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'D'" (' "'") (character "D") (' "'")) (: ":") (expression_statement "FUN_0017b990();" (call_expression "FUN_0017b990()" (identifier "FUN_0017b990") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_2 = (char *)FUN_0017c690();" (assignment_expression "param_2 = (char *)FUN_0017c690()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c690()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c690()" (identifier "FUN_0017c690") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'G':\n    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'G'" (' "'") (character "G") (' "'")) (: ":") (if_statement "if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }\n    else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" (if "if") (parenthesized_expression "(((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0)" (( "(") (binary_expression "((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4)" (( "(") (binary_expression "(&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)(byte)param_2[1] * 2]" (parenthesized_expression "(&DAT_0023a160)" (( "(") (pointer_expression "&DAT_0023a160" (& "&") (identifier "DAT_0023a160")) () ")")) ([ "[") (binary_expression "(uint)(byte)param_2[1] * 2" (cast_expression "(uint)(byte)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)param_2[1]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n    }" ({ "{") (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" (else "else") (compound_statement "{\n      pbVar4 = (byte *)(param_2 + 2);\n      do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);\n      param_2 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }\n    }" ({ "{") (expression_statement "pbVar4 = (byte *)(param_2 + 2);" (assignment_expression "pbVar4 = (byte *)(param_2 + 2)" (identifier "pbVar4") (= "=") (cast_expression "(byte *)(param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (; ";")) (do_statement "do {\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);" (do "do") (compound_statement "{\n        pbVar1 = pbVar4 + ~(uint)param_2;\n        bVar2 = *pbVar4;\n        pbVar4 = pbVar4 + 1;\n      }" ({ "{") (expression_statement "pbVar1 = pbVar4 + ~(uint)param_2;" (assignment_expression "pbVar1 = pbVar4 + ~(uint)param_2" (identifier "pbVar1") (= "=") (binary_expression "pbVar4 + ~(uint)param_2" (identifier "pbVar4") (+ "+") (unary_expression "~(uint)param_2" (~ "~") (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2"))))) (; ";")) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" (identifier "bVar2") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0)" (( "(") (binary_expression "((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0" (parenthesized_expression "((&DAT_0023a160)[(uint)bVar2 * 2] & 4)" (( "(") (binary_expression "(&DAT_0023a160)[(uint)bVar2 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)bVar2 * 2]" (parenthesized_expression "(&DAT_0023a160)" (( "(") (pointer_expression "&DAT_0023a160" (& "&") (identifier "DAT_0023a160")) () ")")) ([ "[") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (pbVar1 != (byte *)0x0) {\n        FUN_0017bbd0();\n      }" (if "if") (parenthesized_expression "(pbVar1 != (byte *)0x0)" (( "(") (binary_expression "pbVar1 != (byte *)0x0" (identifier "pbVar1") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        FUN_0017bbd0();\n      }" ({ "{") (expression_statement "FUN_0017bbd0();" (call_expression "FUN_0017bbd0()" (identifier "FUN_0017bbd0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'H':\n    FUN_0017c870();\n    param_2 = (char *)FUN_0017c870();\n    FUN_0017b850();\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'H'" (' "'") (character "H") (' "'")) (: ":") (expression_statement "FUN_0017c870();" (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n    return (char *)0x0;" (default "default") (: ":") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "case 'N':\n    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }\n    goto code_r0x0017ca69;" (case "case") (char_literal "'N'" (' "'") (character "N") (' "'")) (: ":") (if_statement "if ((param_2[1] != 'g') && (param_2[1] != 'h')) {\n      return (char *)0x0;\n    }" (if "if") (parenthesized_expression "((param_2[1] != 'g') && (param_2[1] != 'h'))" (( "(") (binary_expression "(param_2[1] != 'g') && (param_2[1] != 'h')" (parenthesized_expression "(param_2[1] != 'g')" (( "(") (binary_expression "param_2[1] != 'g'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'g'" (' "'") (character "g") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(param_2[1] != 'h')" (( "(") (binary_expression "param_2[1] != 'h'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'h'" (' "'") (character "h") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      return (char *)0x0;\n    }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (goto_statement "goto code_r0x0017ca69;" (goto "goto") (statement_identifier "code_r0x0017ca69") (; ";"))) (case_statement "case 'O':\n    goto code_r0x0017ca69;" (case "case") (char_literal "'O'" (' "'") (character "O") (' "'")) (: ":") (goto_statement "goto code_r0x0017ca69;" (goto "goto") (statement_identifier "code_r0x0017ca69") (; ";"))) (case_statement "case 'P':\n    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" (case "case") (char_literal "'P'" (' "'") (character "P") (' "'")) (: ":") (if_statement "if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))\n    {\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" (if "if") (parenthesized_expression "((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))" (( "(") (binary_expression "(0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0)" (parenthesized_expression "(0x13 < (byte)(param_2[1] + 0xbaU))" (( "(") (binary_expression "0x13 < (byte)(param_2[1] + 0xbaU)" (number_literal "0x13") (< "<") (call_expression "(byte)(param_2[1] + 0xbaU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2[1] + 0xbaU)" (( "(") (binary_expression "param_2[1] + 0xbaU" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xbaU")) () ")")))) () ")")) (|| "||") (parenthesized_expression "((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0)" (( "(") (binary_expression "(1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0" (parenthesized_expression "(1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U)" (( "(") (binary_expression "1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U" (binary_expression "1 << (param_2[1] + 0xbaU & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(param_2[1] + 0xbaU & 0x1f)" (( "(") (binary_expression "param_2[1] + 0xbaU & 0x1f" (binary_expression "param_2[1] + 0xbaU" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xbaU")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "0xb9001U")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      pcVar3 = (char *)FUN_0017c870();\n      FUN_0017b850();\n      return pcVar3;\n    }" ({ "{") (expression_statement "pcVar3 = (char *)FUN_0017c870();" (assignment_expression "pcVar3 = (char *)FUN_0017c870()" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return pcVar3;" (return "return") (identifier "pcVar3") (; ";")) (} "}")))) (case_statement "case 'F':" (case "case") (char_literal "'F'" (' "'") (character "F") (' "'")) (: ":")) (case_statement "case 'R':" (case "case") (char_literal "'R'" (' "'") (character "R") (' "'")) (: ":")) (case_statement "case 'U':" (case "case") (char_literal "'U'" (' "'") (character "U") (' "'")) (: ":")) (case_statement "case 'V':" (case "case") (char_literal "'V'" (' "'") (character "V") (' "'")) (: ":")) (case_statement "case 'W':" (case "case") (char_literal "'W'" (' "'") (character "W") (' "'")) (: ":")) (case_statement "case 'Y':\n    pcVar3 = (char *)FUN_0017c690();\n    FUN_0017b850();\n    return pcVar3;" (case "case") (char_literal "'Y'" (' "'") (character "Y") (' "'")) (: ":") (expression_statement "pcVar3 = (char *)FUN_0017c690();" (assignment_expression "pcVar3 = (char *)FUN_0017c690()" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0017c690()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c690()" (identifier "FUN_0017c690") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return pcVar3;" (return "return") (identifier "pcVar3") (; ";"))) (case_statement "case 'a':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'a'" (' "'") (character "a") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'b':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'b'" (' "'") (character "b") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'c':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'c'" (' "'") (character "c") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'd':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'d'" (' "'") (character "d") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'e':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'e'" (' "'") (character "e") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'f':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'f'" (' "'") (character "f") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'g':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'g'" (' "'") (character "g") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'h':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'h'" (' "'") (character "h") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'i':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'i'" (' "'") (character "i") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'j':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'j'" (' "'") (character "j") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'k':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'k'" (' "'") (character "k") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'l':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'l'" (' "'") (character "l") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'm':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'m'" (' "'") (character "m") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'n':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'n'" (' "'") (character "n") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'o':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'o'" (' "'") (character "o") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'p':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'p'" (' "'") (character "p") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'q':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'q'" (' "'") (character "q") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'r':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'r'" (' "'") (character "r") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 's':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'s'" (' "'") (character "s") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 't':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'t'" (' "'") (character "t") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'u':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'u'" (' "'") (character "u") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'v':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'v'" (' "'") (character "v") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'w':\n    param_2 = param_2 + 1;\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'w'" (' "'") (character "w") (' "'")) (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'x':\n    goto code_r0x0017ca69;" (case "case") (char_literal "'x'" (' "'") (character "x") (' "'")) (: ":") (goto_statement "goto code_r0x0017ca69;" (goto "goto") (statement_identifier "code_r0x0017ca69") (; ";"))) (case_statement "case 'y':\ncode_r0x0017ca69:\n    FUN_0017b850();\n    param_2 = (char *)FUN_0017c870();\ncode_r0x0017c9f9:\n    FUN_0017b850();\n    break;" (case "case") (char_literal "'y'" (' "'") (character "y") (' "'")) (: ":") (labeled_statement "code_r0x0017ca69:\n    FUN_0017b850();" (statement_identifier "code_r0x0017ca69") (: ":") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "param_2 = (char *)FUN_0017c870();" (assignment_expression "param_2 = (char *)FUN_0017c870()" (identifier "param_2") (= "=") (cast_expression "(char *)FUN_0017c870()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (labeled_statement "code_r0x0017c9f9:\n    FUN_0017b850();" (statement_identifier "code_r0x0017c9f9") (: ":") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'z':\n    if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }\n    if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }\n    FUN_0017b850();\n    return param_2 + 2;" (case "case") (char_literal "'z'" (' "'") (character "z") (' "'")) (: ":") (if_statement "if (param_2[1] == 'i') {\n      FUN_0017b850();\n      return param_2 + 2;\n    }" (if "if") (parenthesized_expression "(param_2[1] == 'i')" (( "(") (binary_expression "param_2[1] == 'i'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'i'" (' "'") (character "i") (' "'"))) () ")")) (compound_statement "{\n      FUN_0017b850();\n      return param_2 + 2;\n    }" ({ "{") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return param_2 + 2;" (return "return") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) (; ";")) (} "}"))) (if_statement "if (param_2[1] != 'k') {\n      return (char *)0x0;\n    }" (if "if") (parenthesized_expression "(param_2[1] != 'k')" (( "(") (binary_expression "param_2[1] != 'k'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'k'" (' "'") (character "k") (' "'"))) () ")")) (compound_statement "{\n      return (char *)0x0;\n    }" ({ "{") (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return param_2 + 2;" (return "return") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) (; ";"))) (} "}"))) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3 function_1(type_1 *decl,char *var_1)

{
  type_2 *pbVar1;
  char *var_4;
  int iVar3;
  char *pcVar4;
  type_2 *var_9;
  bool bVar5;
  type_1 *in_stack_ffffffc4;
  char *in_stack_ffffffc8;
  type_3 in_stack_ffffffcc;
  type_1 type;
  
  if (var_1 == (char *)0x0) {
    return (char *)0x0;
  }
  if (*var_1 == '\0') {
    return (char *)0x0;
  }
  switch(*var_1) {
  case 'A':
    var_4 = function_1(decl,var_1 + 1);
    var_2(decl,"[]");
    break;
  case 'B':
    var_4 = var_3(var_1 + 1,(long *)&type);
    if (var_4 == (char *)0x0) {
      return (char *)0x0;
    }
    var_2(decl,"Tuple!(");
    while (pcVar4 = type.b + -1, bVar5 = type.b != (char *)0x0, type.b = pcVar4, bVar5) {
      var_4 = function_1(decl,var_4);
      if (type.b == (char *)0x0) {
        type.b = (char *)0xffffffff;
        break;
      }
      var_2(decl,", ");
    }
    goto LAB_0017c9f9;
  case 'C':
  case 'E':
  case 'I':
  case 'S':
  case 'T':
    var_4 = var_5(in_stack_ffffffc4,in_stack_ffffffc8,in_stack_ffffffcc);
    break;
  case 'D':
    type.e = (char *)0x0;
    type.p = (char *)0x0;
    type.b = (char *)0x0;
    var_4 = var_6(&type,var_1 + 1);
    if (type.b == type.p) {
      var_4 = var_7(decl,var_4);
      var_2(decl,"delegate");
    }
    else {
      iVar3 = (int)type.p - (int)type.b;
      var_4 = var_7(decl,var_4);
      var_2(decl,"delegate");
      var_8(decl,type.b,iVar3);
    }
    goto joined_r0x0017cc10;
  case 'G':
    if ((_sch_istable[(type_2)var_1[1]] & 4) == 0) {
      var_4 = function_1(decl,var_1 + 1);
      var_2(decl,"[");
    }
    else {
      pbVar1 = (type_2 *)(var_1 + 2);
      do {
        var_9 = pbVar1;
        pbVar1 = var_9 + 1;
      } while ((_sch_istable[*var_9] & 4) != 0);
      var_4 = function_1(decl,(char *)var_9);
      var_2(decl,"[");
      if (var_9 + ~(type_4)var_1 != (type_2 *)0x0) {
        var_8(decl,var_1 + 1,(int)(var_9 + ~(type_4)var_1));
      }
    }
    var_2(decl,"]");
    break;
  case 'H':
    type.e = (char *)0x0;
    type.p = (char *)0x0;
    type.b = (char *)0x0;
    var_4 = function_1(&type,var_1 + 1);
    if (type.b == type.p) {
      var_4 = function_1(decl,var_4);
      var_2(decl,"[");
    }
    else {
      iVar3 = (int)type.p - (int)type.b;
      var_4 = function_1(decl,var_4);
      var_2(decl,"[");
      var_8(decl,type.b,iVar3);
    }
    var_2(decl,"]");
joined_r0x0017cc10:
    if (type.b != (char *)0x0) {
      var_10(type.b);
    }
    break;
  default:
    return (char *)0x0;
  case 'N':
    if (var_1[1] == 'g') {
      var_4 = var_1 + 2;
      pcVar4 = "inout(";
    }
    else {
      if (var_1[1] != 'h') {
        return (char *)0x0;
      }
      var_4 = var_1 + 2;
      pcVar4 = "__vector(";
    }
    goto LAB_0017ca69;
  case 'O':
    var_4 = var_1 + 1;
    pcVar4 = "shared(";
    goto LAB_0017ca69;
  case 'P':
    var_4 = var_1 + 1;
    var_1 = var_1 + 1;
    if ((0x13 < (type_2)(*var_4 + 0xbaU)) || ((1 << (*var_4 + 0xbaU & 0x1f) & 0xb9001U) == 0)) {
      var_4 = function_1(decl,var_1);
      var_2(decl,"*");
      return var_4;
    }
  case 'F':
  case 'R':
  case 'U':
  case 'V':
  case 'W':
  case 'Y':
    var_4 = var_7(decl,var_1);
    var_2(decl,"function");
    return var_4;
  case 'a':
    var_4 = var_1 + 1;
    var_2(decl,"char");
    break;
  case 'b':
    var_4 = var_1 + 1;
    var_2(decl,"bool");
    break;
  case 'c':
    var_4 = var_1 + 1;
    var_2(decl,"creal");
    break;
  case 'd':
    var_4 = var_1 + 1;
    var_2(decl,"double");
    break;
  case 'e':
    var_4 = var_1 + 1;
    var_2(decl,"real");
    break;
  case 'f':
    var_4 = var_1 + 1;
    var_2(decl,"float");
    break;
  case 'g':
    var_4 = var_1 + 1;
    var_2(decl,"byte");
    break;
  case 'h':
    var_4 = var_1 + 1;
    var_2(decl,"ubyte");
    break;
  case 'i':
    var_4 = var_1 + 1;
    var_2(decl,"int");
    break;
  case 'j':
    var_4 = var_1 + 1;
    var_2(decl,"ireal");
    break;
  case 'k':
    var_4 = var_1 + 1;
    var_2(decl,"uint");
    break;
  case 'l':
    var_4 = var_1 + 1;
    var_2(decl,"long");
    break;
  case 'm':
    var_4 = var_1 + 1;
    var_2(decl,"ulong");
    break;
  case 'n':
    var_4 = var_1 + 1;
    var_2(decl,"none");
    break;
  case 'o':
    var_4 = var_1 + 1;
    var_2(decl,"ifloat");
    break;
  case 'p':
    var_4 = var_1 + 1;
    var_2(decl,"idouble");
    break;
  case 'q':
    var_4 = var_1 + 1;
    var_2(decl,"cfloat");
    break;
  case 'r':
    var_4 = var_1 + 1;
    var_2(decl,"cdouble");
    break;
  case 's':
    var_4 = var_1 + 1;
    var_2(decl,"short");
    break;
  case 't':
    var_4 = var_1 + 1;
    var_2(decl,"ushort");
    break;
  case 'u':
    var_4 = var_1 + 1;
    var_2(decl,"wchar");
    break;
  case 'v':
    var_4 = var_1 + 1;
    var_2(decl,"void");
    break;
  case 'w':
    var_4 = var_1 + 1;
    var_2(decl,"dchar");
    break;
  case 'x':
    var_4 = var_1 + 1;
    pcVar4 = "const(";
    goto LAB_0017ca69;
  case 'y':
    var_4 = var_1 + 1;
    pcVar4 = "immutable(";
LAB_0017ca69:
    var_2(decl,pcVar4);
    var_4 = function_1(decl,var_4);
LAB_0017c9f9:
    var_2(decl,")");
    break;
  case 'z':
    if (var_1[1] == 'i') {
      var_2(decl,"cent");
      return var_1 + 2;
    }
    if (var_1[1] != 'k') {
      return (char *)0x0;
    }
    var_2(decl,"ucent");
    return var_1 + 2;
  }
  return var_4;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (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 (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (switch_statement condition: (parenthesized_expression (pointer_expression argument: (identifier))) body: (compound_statement (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (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 (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list)))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) alternative: (else_clause (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: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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 (call_expression function: (identifier) arguments: (argument_list)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement value: (char_literal (character)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (goto_statement label: (statement_identifier))) (case_statement value: (char_literal (character)) (goto_statement label: (statement_identifier))) (case_statement value: (char_literal (character)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (number_literal)))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (identifier))))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character))) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (identifier))) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (char_literal (character)) (goto_statement label: (statement_identifier))) (case_statement value: (char_literal (character)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) (break_statement)) (case_statement value: (char_literal (character)) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x0017cbd4) */
/* WARNING: Removing unreachable block (ram,0x0017c934) */
/* WARNING: Removing unreachable block (ram,0x0017c969) */

char * __regparm3 MASKED(undefined4 param_1,char *param_2)

{
  byte *pbVar1;
  byte bVar2;
  char *pcVar3;
  byte *pbVar4;
  int iStack_28;
  
  if (param_2 == (char *)0x0) {
    return (char *)0x0;
  }
  if (*param_2 == '\0') {
    return (char *)0x0;
  }
  switch(*param_2) {
  case 'A':
    param_2 = (char *)MASKED();
    FUN_0017b850();
    break;
  case 'B':
    param_2 = (char *)FUN_0017b740();
    if (param_2 == (char *)0x0) {
      return (char *)0x0;
    }
    FUN_0017b850();
    while ((iStack_28 != 0 && (param_2 = (char *)MASKED(), iStack_28 + -1 != 0))) {
      FUN_0017b850();
      iStack_28 = iStack_28 + -1;
    }
    goto code_r0x0017c9f9;
  case 'C':
  case 'E':
  case 'I':
  case 'S':
  case 'T':
    param_2 = (char *)FUN_0017d830();
    break;
  case 'D':
    FUN_0017b990();
    param_2 = (char *)FUN_0017c690();
    FUN_0017b850();
    break;
  case 'G':
    if (((&DAT_0023a160)[(uint)(byte)param_2[1] * 2] & 4) == 0) {
      param_2 = (char *)MASKED();
      FUN_0017b850();
    }
    else {
      pbVar4 = (byte *)(param_2 + 2);
      do {
        pbVar1 = pbVar4 + ~(uint)param_2;
        bVar2 = *pbVar4;
        pbVar4 = pbVar4 + 1;
      } while (((&DAT_0023a160)[(uint)bVar2 * 2] & 4) != 0);
      param_2 = (char *)MASKED();
      FUN_0017b850();
      if (pbVar1 != (byte *)0x0) {
        FUN_0017bbd0();
      }
    }
    FUN_0017b850();
    break;
  case 'H':
    MASKED();
    param_2 = (char *)MASKED();
    FUN_0017b850();
    FUN_0017b850();
    break;
  default:
    return (char *)0x0;
  case 'N':
    if ((param_2[1] != 'g') && (param_2[1] != 'h')) {
      return (char *)0x0;
    }
    goto code_r0x0017ca69;
  case 'O':
    goto code_r0x0017ca69;
  case 'P':
    if ((0x13 < (byte)(param_2[1] + 0xbaU)) || ((1 << (param_2[1] + 0xbaU & 0x1f) & 0xb9001U) == 0))
    {
      pcVar3 = (char *)MASKED();
      FUN_0017b850();
      return pcVar3;
    }
  case 'F':
  case 'R':
  case 'U':
  case 'V':
  case 'W':
  case 'Y':
    pcVar3 = (char *)FUN_0017c690();
    FUN_0017b850();
    return pcVar3;
  case 'a':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'b':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'c':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'd':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'e':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'f':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'g':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'h':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'i':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'j':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'k':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'l':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'm':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'n':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'o':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'p':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'q':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'r':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 's':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 't':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'u':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'v':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'w':
    param_2 = param_2 + 1;
    FUN_0017b850();
    break;
  case 'x':
    goto code_r0x0017ca69;
  case 'y':
code_r0x0017ca69:
    FUN_0017b850();
    param_2 = (char *)MASKED();
code_r0x0017c9f9:
    FUN_0017b850();
    break;
  case 'z':
    if (param_2[1] == 'i') {
      FUN_0017b850();
      return param_2 + 2;
    }
    if (param_2[1] != 'k') {
      return (char *)0x0;
    }
    FUN_0017b850();
    return param_2 + 2;
  }
  return param_2;
}

