
char * dlang_value(string *decl,char *mangled,char *name,char type)

{
  long lVar1;
  ushort uVar2;
  byte bVar3;
  char *pcVar4;
  ulong uVar5;
  ulong uVar6;
  char cVar7;
  byte *pbVar8;
  ushort uVar9;
  byte *s;
  bool bVar10;
  char type_1;
  char val;
  long elements;
  
  if ((mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0'))
  goto switchD_002d6986_caseD_3a;
  switch(type_1) {
  default:
    goto switchD_002d6986_caseD_3a;
  case 'A':
    if (type == 'H') {
      pcVar4 = dlang_number(mangled + 1,&elements);
      if (pcVar4 == (char *)0x0) {
        return (char *)0x0;
      }
      string_append(decl,"[");
      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {
        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');
        string_append(decl,":");
        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');
        if (elements == 0) goto LAB_002d6a56;
        string_append(decl,", ");
      }
    }
    else {
      pcVar4 = dlang_number(mangled + 1,&elements);
      if (pcVar4 == (char *)0x0) {
        return (char *)0x0;
      }
      string_append(decl,"[");
      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {
        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');
        if (elements == 0) goto LAB_002d6a56;
        string_append(decl,", ");
      }
    }
    goto LAB_002d6a5f;
  case 'N':
    string_append(decl,"-");
    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);
    break;
  case 'S':
    pcVar4 = dlang_number(mangled + 1,&elements);
    if (pcVar4 != (char *)0x0) {
      if (name != (char *)0x0) {
        string_append(decl,name);
      }
      string_append(decl,"(");
      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {
        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');
        if (elements == 0) {
          elements = -1;
          break;
        }
        string_append(decl,", ");
      }
      string_append(decl,")");
    }
    break;
  case 'a':
  case 'd':
  case 'w':
    pcVar4 = dlang_number(mangled + 1,&elements);
    if (pcVar4 == (char *)0x0) {
      return (char *)0x0;
    }
    if (*pcVar4 == '_') {
      pbVar8 = (byte *)(pcVar4 + 1);
      string_append(decl,"\"");
      lVar1 = elements + -1;
      bVar10 = elements == 0;
      elements = lVar1;
      if (bVar10) {
LAB_002d6ee0:
        string_append(decl,"\"");
        if (type_1 == 'a') {
          return (char *)pbVar8;
        }
        string_appendn(decl,&type_1,1);
        return (char *)pbVar8;
      }
      if (pbVar8 != (byte *)0x0) {
        uVar5 = (ulong)(byte)pcVar4[1];
        uVar2 = _sch_istable[uVar5];
        if ((uVar2 & 0x100) != 0) {
          uVar6 = (ulong)(byte)pcVar4[2];
          uVar9 = _sch_istable[uVar6];
          if ((uVar9 & 0x100) != 0) {
            s = pbVar8;
            do {
              cVar7 = (char)uVar5 + -0x30;
              if ((uVar2 & 4) == 0) {
                cVar7 = (char)uVar5 + -0x37;
              }
              if ((uVar9 & 4) == 0) {
                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;
              }
              else {
                bVar3 = (char)uVar6 - 0x30;
              }
              val = (byte)((int)cVar7 << 4) | bVar3;
              pbVar8 = s + 2;
              if (pbVar8 == (byte *)0x0) break;
              switch(val) {
              case '\t':
                string_append(decl,"\\t");
                break;
              case '\n':
                string_append(decl,"\\n");
                break;
              case '\v':
                string_append(decl,"\\v");
                break;
              case '\f':
                string_append(decl,"\\f");
                break;
              case '\r':
                string_append(decl,"\\r");
                break;
              default:
                if ((_sch_istable[(byte)val] & 0x10) == 0) {
                  string_append(decl,"\\x");
                  string_appendn(decl,(char *)s,2);
                }
                else {
                  string_appendn(decl,&val,1);
                }
                break;
              case ' ':
                string_append(decl," ");
              }
              lVar1 = elements + -1;
              bVar10 = elements == 0;
              elements = lVar1;
              if (bVar10) goto LAB_002d6ee0;
              uVar5 = (ulong)*pbVar8;
              uVar2 = _sch_istable[uVar5];
              if ((uVar2 & 0x100) == 0) break;
              uVar6 = (ulong)s[3];
              uVar9 = _sch_istable[uVar6];
              s = pbVar8;
            } while ((uVar9 & 0x100) != 0);
          }
        }
      }
    }
    goto switchD_002d6986_caseD_3a;
  case 'c':
    pcVar4 = dlang_parse_real(decl,mangled + 1);
    string_append(decl,"+");
    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {
      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);
      string_append(decl,"i");
      return pcVar4;
    }
switchD_002d6986_caseD_3a:
    pcVar4 = (char *)0x0;
    break;
  case 'e':
    pcVar4 = dlang_parse_real(decl,mangled + 1);
    break;
  case 'i':
    mangled = mangled + 1;
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    pcVar4 = dlang_parse_integer(decl,mangled,type);
    return pcVar4;
  case 'n':
    pcVar4 = mangled + 1;
    string_append(decl,"null");
  }
  return pcVar4;
LAB_002d6a56:
  elements = -1;
LAB_002d6a5f:
  string_append(decl,"]");
  return pcVar4;
}



byte * FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)

{
  long lVar1;
  ushort uVar2;
  char *pcVar3;
  ulong uVar4;
  ulong uVar5;
  undefined8 uVar6;
  char cVar7;
  byte *pbVar8;
  ushort uVar9;
  byte *pbVar10;
  bool bVar11;
  char local_42;
  byte local_41;
  long local_40 [2];
  
  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))
  goto switchD_002d6986_caseD_3a;
  switch(local_42) {
  default:
    goto switchD_002d6986_caseD_3a;
  case 'A':
    if (param_4 == 'H') {
      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);
      if (pbVar8 == (byte *)0x0) {
        return (byte *)0x0;
      }
      FUN_002d6040(param_1,&DAT_003763cb);
      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {
        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);
        FUN_002d6040(param_1,&DAT_0037aef2);
        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);
        if (local_40[0] == 0) goto LAB_002d6a56;
        FUN_002d6040(param_1,", ");
      }
    }
    else {
      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);
      if (pbVar8 == (byte *)0x0) {
        return (byte *)0x0;
      }
      FUN_002d6040(param_1,&DAT_003763cb);
      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {
        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);
        if (local_40[0] == 0) goto LAB_002d6a56;
        FUN_002d6040(param_1,", ");
      }
    }
    goto LAB_002d6a5f;
  case 'N':
    FUN_002d6040(param_1,&DAT_00379a38);
    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);
    break;
  case 'S':
    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);
    if (pbVar8 != (byte *)0x0) {
      if (param_3 != 0) {
        FUN_002d6040(param_1,param_3);
      }
      FUN_002d6040(param_1,"(");
      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {
        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);
        if (local_40[0] == 0) {
          local_40[0] = -1;
          break;
        }
        FUN_002d6040(param_1,", ");
      }
      FUN_002d6040(param_1,&DAT_0038e477);
    }
    break;
  case 'a':
  case 'd':
  case 'w':
    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);
    if (pcVar3 == (char *)0x0) {
      return (byte *)0x0;
    }
    if (*pcVar3 == '_') {
      pbVar8 = (byte *)(pcVar3 + 1);
      FUN_002d6040(param_1,&DAT_0038e1b1);
      lVar1 = local_40[0] + -1;
      bVar11 = local_40[0] == 0;
      local_40[0] = lVar1;
      if (bVar11) {
LAB_002d6ee0:
        FUN_002d6040(param_1,&DAT_0038e1b1);
        if (local_42 == 'a') {
          return pbVar8;
        }
        FUN_002d63a0(param_1,&local_42,1);
        return pbVar8;
      }
      if (pbVar8 != (byte *)0x0) {
        uVar4 = (ulong)(byte)pcVar3[1];
        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);
        if ((uVar2 & 0x100) != 0) {
          uVar5 = (ulong)(byte)pcVar3[2];
          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);
          if ((uVar9 & 0x100) != 0) {
            pbVar10 = pbVar8;
            do {
              cVar7 = (char)uVar4 + -0x30;
              if ((uVar2 & 4) == 0) {
                cVar7 = (char)uVar4 + -0x37;
              }
              if ((uVar9 & 4) == 0) {
                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;
              }
              else {
                local_41 = (char)uVar5 - 0x30;
              }
              local_41 = (byte)((int)cVar7 << 4) | local_41;
              pbVar8 = pbVar10 + 2;
              if (pbVar8 == (byte *)0x0) break;
              switch(local_41) {
              case 9:
                FUN_002d6040(param_1,&DAT_0038ff31);
                break;
              case 10:
                FUN_002d6040(param_1,&DAT_0038ff34);
                break;
              case 0xb:
                FUN_002d6040(param_1,&DAT_0038ff3d);
                break;
              case 0xc:
                FUN_002d6040(param_1,&DAT_0038ff3a);
                break;
              case 0xd:
                FUN_002d6040(param_1,&DAT_0038ff37);
                break;
              default:
                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {
                  FUN_002d6040(param_1,&DAT_0038ff0e);
                  FUN_002d63a0(param_1,pbVar10,2);
                }
                else {
                  FUN_002d63a0(param_1,&local_41,1);
                }
                break;
              case 0x20:
                FUN_002d6040(param_1,&DAT_0038529f);
              }
              lVar1 = local_40[0] + -1;
              bVar11 = local_40[0] == 0;
              local_40[0] = lVar1;
              if (bVar11) goto LAB_002d6ee0;
              uVar4 = (ulong)*pbVar8;
              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);
              if ((uVar2 & 0x100) == 0) break;
              uVar5 = (ulong)pbVar10[3];
              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);
              pbVar10 = pbVar8;
            } while ((uVar9 & 0x100) != 0);
          }
        }
      }
    }
    goto switchD_002d6986_caseD_3a;
  case 'c':
    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);
    FUN_002d6040(param_1,&DAT_0038536d);
    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {
      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);
      FUN_002d6040(param_1,&DAT_0037a19c);
      return pbVar8;
    }
switchD_002d6986_caseD_3a:
    pbVar8 = (byte *)0x0;
    break;
  case 'e':
    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);
    break;
  case 'i':
    param_2 = param_2 + 1;
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);
    return pbVar8;
  case 'n':
    pbVar8 = (byte *)(param_2 + 1);
    FUN_002d6040(param_1,&DAT_0038ff2c);
  }
  return pbVar8;
LAB_002d6a56:
  local_40[0] = -1;
LAB_002d6a5f:
  FUN_002d6040(param_1,"]");
  return pbVar8;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
TEST RSI,RSI
JZ 0x002d69c0
MOV RBP,RDI
MOVZX EDI,byte ptr [RSI]
TEST DIL,DIL
JZ 0x002d69c0
LEA EAX,[RDI + -0x30]
CMP AL,0x47
JA 0x002d69c0
LEA R8,[0x390138]
MOVZX EAX,AL
MOVSXD RAX,dword ptr [R8 + RAX*0x4]
ADD RAX,R8
JMP RAX
ADD RSI,0x1
MOV RDI,RBP
CALL 0x002d6720
LEA RSI,[0x38536d]
MOV RDI,RBP
MOV RBX,RAX
CALL 0x002d6040
TEST RBX,RBX
JZ 0x002d69c0
CMP byte ptr [RBX],0x63
JZ 0x002d6cc8
NOP dword ptr [RAX]
XOR EBX,EBX
ADD RSP,0x28
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
ADD RSI,0x1
MOVSX EDX,CL
MOV RDI,RBP
CALL 0x002d63d0
MOV RBX,RAX
JMP 0x002d69c2
LEA RDI,[RSI + 0x1]
LEA RSI,[RSP + 0x18]
CMP CL,0x48
JZ 0x002d6e10
CALL 0x002d5f30
MOV RBX,RAX
TEST RAX,RAX
JZ 0x002d69c2
LEA RSI,[0x3763cb]
MOV RDI,RBP
LEA R12,[0x38c37b]
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
LEA RDX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RDX
TEST RAX,RAX
JZ 0x002d6a5f
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,RBP
CALL 0x002d6950
CMP qword ptr [RSP + 0x18],0x0
MOV RBX,RAX
JNZ 0x002d6de8
MOV qword ptr [RSP + 0x18],-0x1
LEA RSI,[0x379db2]
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d69c2
LEA RBX,[RSI + 0x1]
MOV RDI,RBP
LEA RSI,[0x379a38]
MOV dword ptr [RSP + 0x8],ECX
CALL 0x002d6040
MOV ECX,dword ptr [RSP + 0x8]
MOV RSI,RBX
MOV RDI,RBP
MOVSX EDX,CL
CALL 0x002d63d0
MOV RBX,RAX
JMP 0x002d69c2
LEA RAX,[RSP + 0x18]
LEA RDI,[RSI + 0x1]
MOV qword ptr [RSP + 0x8],RDX
MOV RSI,RAX
CALL 0x002d5f30
MOV RBX,RAX
TEST RAX,RAX
JZ 0x002d69c2
MOV RDX,qword ptr [RSP + 0x8]
TEST RDX,RDX
JZ 0x002d6ae7
MOV RSI,RDX
MOV RDI,RBP
CALL 0x002d6040
LEA RSI,[0x382c08]
MOV RDI,RBP
LEA R12,[0x38c37b]
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
LEA RDX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RDX
TEST RAX,RAX
JZ 0x002d6b37
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,RBP
CALL 0x002d6950
CMP qword ptr [RSP + 0x18],0x0
MOV RBX,RAX
JNZ 0x002d6cb0
MOV qword ptr [RSP + 0x18],-0x1
LEA RSI,[0x38e477]
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d69c2
MOV byte ptr [RSP + 0x16],DIL
LEA RDI,[RSI + 0x1]
LEA RSI,[RSP + 0x18]
CALL 0x002d5f30
MOV RBX,RAX
TEST RAX,RAX
JZ 0x002d69c2
CMP byte ptr [RAX],0x5f
JNZ 0x002d69c0
LEA RSI,[0x38e1b1]
MOV RDI,RBP
LEA R14,[RAX + 0x1]
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
LEA RDX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RDX
TEST RAX,RAX
JZ 0x002d6ed4
TEST R14,R14
JZ 0x002d69c0
MOVZX EAX,byte ptr [RBX + 0x1]
LEA R15,[0x3909e0]
MOVZX ESI,word ptr [R15 + RAX*0x2]
MOV R9,RAX
TEST SI,0x100
JZ 0x002d69c0
MOVZX EDX,byte ptr [RBX + 0x2]
MOVZX EDI,word ptr [R15 + RDX*0x2]
MOV RAX,RDX
TEST DI,0x100
JZ 0x002d69c0
LEA RCX,[RSP + 0x17]
LEA R12,[0x390258]
MOV qword ptr [RSP + 0x8],RCX
LEA R13,[0x38ff3d]
NOP dword ptr [RAX + RAX*0x1]
LEA EDX,[R9 + -0x30]
TEST SIL,0x4
JNZ 0x002d6c21
AND SI,0x80
CMP SI,0x1
SBB EDX,EDX
AND EDX,0x20
SUB R9D,EDX
MOV EDX,R9D
SUB EDX,0x37
MOVSX EDX,DL
SHL EDX,0x4
TEST DIL,0x4
JNZ 0x002d6e00
AND DI,0x80
CMP DI,0x1
SBB ESI,ESI
AND ESI,0x20
SUB EAX,ESI
SUB EAX,0x37
OR EDX,EAX
MOV byte ptr [RSP + 0x17],DL
MOV RBX,R14
ADD RBX,0x2
JZ 0x002d69c0
MOVZX EDX,byte ptr [RSP + 0x17]
LEA EAX,[RDX + -0x9]
CMP AL,0x17
JA 0x002d6dc0
MOVZX EAX,AL
MOVSXD RAX,dword ptr [R12 + RAX*0x4]
ADD RAX,R12
JMP RAX
ADD RSI,0x1
MOV RDI,RBP
CALL 0x002d6720
MOV RBX,RAX
JMP 0x002d69c2
LEA RBX,[RSI + 0x1]
MOV RDI,RBP
LEA RSI,[0x38ff2c]
CALL 0x002d6040
JMP 0x002d69c2
MOV RSI,R12
MOV RDI,RBP
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
JMP 0x002d6b02
LEA RSI,[RBX + 0x1]
MOV RDI,RBP
CALL 0x002d6720
LEA RSI,[0x37a19c]
MOV RDI,RBP
MOV RBX,RAX
CALL 0x002d6040
JMP 0x002d69c2
LEA RSI,[0x38529f]
MOV RDI,RBP
CALL 0x002d6040
NOP
MOV RAX,qword ptr [RSP + 0x18]
LEA RDX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RDX
TEST RAX,RAX
JZ 0x002d6ee0
MOVZX EAX,byte ptr [RBX]
MOVZX ESI,word ptr [R15 + RAX*0x2]
MOV R9,RAX
TEST SI,0x100
JZ 0x002d69c0
MOVZX EDX,byte ptr [RBX + 0x1]
MOV R14,RBX
MOVZX EDI,word ptr [R15 + RDX*0x2]
MOV RAX,RDX
TEST DI,0x100
JNZ 0x002d6c00
JMP 0x002d69c0
LEA RSI,[0x38ff37]
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d6d00
LEA RSI,[0x38ff3a]
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d6d00
MOV RSI,R13
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d6d00
LEA RSI,[0x38ff34]
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d6d00
LEA RSI,[0x38ff31]
MOV RDI,RBP
CALL 0x002d6040
JMP 0x002d6d00
TEST byte ptr [R15 + RDX*0x2],0x10
JZ 0x002d6eb0
MOV RSI,qword ptr [RSP + 0x8]
MOV EDX,0x1
MOV RDI,RBP
CALL 0x002d63a0
JMP 0x002d6d00
MOV RSI,R12
MOV RDI,RBP
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
JMP 0x002d6a2a
SUB EAX,0x30
OR EDX,EAX
MOV byte ptr [RSP + 0x17],DL
JMP 0x002d6c4a
CALL 0x002d5f30
MOV RBX,RAX
TEST RAX,RAX
JZ 0x002d69c2
LEA RSI,[0x3763cb]
MOV RDI,RBP
LEA R12,[0x37aef2]
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
LEA RDX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RDX
TEST RAX,RAX
JZ 0x002d6a5f
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,RBP
CALL 0x002d6950
MOV RSI,R12
MOV RDI,RBP
MOV RBX,RAX
CALL 0x002d6040
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,RBP
CALL 0x002d6950
CMP qword ptr [RSP + 0x18],0x0
MOV RBX,RAX
JZ 0x002d6a56
LEA RSI,[0x38c37b]
MOV RDI,RBP
CALL 0x002d6040
MOV RAX,qword ptr [RSP + 0x18]
LEA RDX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RDX
TEST RAX,RAX
JNZ 0x002d6e4e
JMP 0x002d6a5f
MOV RDI,RBP
LEA RSI,[0x38ff0e]
CALL 0x002d6040
MOV EDX,0x2
MOV RSI,R14
MOV RDI,RBP
CALL 0x002d63a0
JMP 0x002d6d00
MOV RBX,R14
NOP word ptr [RAX + RAX*0x1]
LEA RSI,[0x38e1b1]
MOV RDI,RBP
CALL 0x002d6040
CMP byte ptr [RSP + 0x16],0x61
JZ 0x002d69c2
LEA RSI,[RSP + 0x16]
MOV EDX,0x1
MOV RDI,RBP
CALL 0x002d63a0
JMP 0x002d69c2
(translation_unit "byte * FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)\n\n{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}\n\n" (function_definition "byte * FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)\n\n{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}" type_identifier (pointer_declarator "* FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)" * (function_declarator "FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)" identifier (parameter_list "(undefined8 param_1,char *param_2,long param_3,char param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char param_4" primitive_type identifier) )))) (compound_statement "{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "ushort uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "char local_42;" primitive_type identifier ;) (declaration "byte local_41;" type_identifier identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (if_statement "if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;" if (parenthesized_expression "((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))" ( (binary_expression "(param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0')" (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)) )) || (parenthesized_expression "(local_42 = *param_2, local_42 == '\0')" ( (comma_expression "local_42 = *param_2, local_42 == '\0'" (assignment_expression "local_42 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) , (binary_expression "local_42 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (switch_statement "switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }" switch (parenthesized_expression "(local_42)" ( identifier )) (compound_statement "{\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }" { (case_statement "default:\n    goto switchD_002d6986_caseD_3a;" default : (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (case_statement "case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;" case (char_literal "'A'" ' character ') : (if_statement "if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" if (parenthesized_expression "(param_4 == 'H')" ( (binary_expression "param_4 == 'H'" identifier == (char_literal "'H'" ' character ')) )) (compound_statement "{\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" { (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_002d6040(param_1,&DAT_003763cb);" (call_expression "FUN_002d6040(param_1,&DAT_003763cb)" identifier (argument_list "(param_1,&DAT_003763cb)" ( identifier , (pointer_expression "&DAT_003763cb" & identifier) ))) ;) (while_statement "while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" while (parenthesized_expression "(bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11)" ( (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" identifier = (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) , (comma_expression "local_40[0] = local_40[0] + -1, bVar11" (assignment_expression "local_40[0] = local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) , identifier)) )) (compound_statement "{\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" { (expression_statement "uVar6 = FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "uVar6 = FUN_002d6950(param_1,pbVar8,0,0)" identifier = (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" identifier (argument_list "(param_1,pbVar8,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0037aef2);" (call_expression "FUN_002d6040(param_1,&DAT_0037aef2)" identifier (argument_list "(param_1,&DAT_0037aef2)" ( identifier , (pointer_expression "&DAT_0037aef2" & identifier) ))) ;) (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0)" identifier = (cast_expression "(byte *)FUN_002d6950(param_1,uVar6,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6950(param_1,uVar6,0)" identifier (argument_list "(param_1,uVar6,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (local_40[0] == 0) goto LAB_002d6a56;" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002d6a56;" goto statement_identifier ;)) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" identifier (argument_list "(param_1,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) }) (else_clause "else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" else (compound_statement "{\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" { (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_002d6040(param_1,&DAT_003763cb);" (call_expression "FUN_002d6040(param_1,&DAT_003763cb)" identifier (argument_list "(param_1,&DAT_003763cb)" ( identifier , (pointer_expression "&DAT_003763cb" & identifier) ))) ;) (while_statement "while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" while (parenthesized_expression "(lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11)" ( (comma_expression "lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) , (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" identifier = (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) , (comma_expression "local_40[0] = lVar1, bVar11" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) , identifier))) )) (compound_statement "{\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" { (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0)" identifier = (cast_expression "(byte *)FUN_002d6950(param_1,pbVar8,0,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" identifier (argument_list "(param_1,pbVar8,0,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (if_statement "if (local_40[0] == 0) goto LAB_002d6a56;" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002d6a56;" goto statement_identifier ;)) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" identifier (argument_list "(param_1,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) }))) (goto_statement "goto LAB_002d6a5f;" goto statement_identifier ;)) (case_statement "case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;" case (char_literal "'N'" ' character ') : (expression_statement "FUN_002d6040(param_1,&DAT_00379a38);" (call_expression "FUN_002d6040(param_1,&DAT_00379a38)" identifier (argument_list "(param_1,&DAT_00379a38)" ( identifier , (pointer_expression "&DAT_00379a38" & identifier) ))) ;) (expression_statement "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);" (assignment_expression "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" identifier = (cast_expression "(byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" identifier (argument_list "(param_1,param_2 + 1,(int)param_4)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) , (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;" case (char_literal "'S'" ' character ') : (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }" if (parenthesized_expression "(pbVar8 != (byte *)0x0)" ( (binary_expression "pbVar8 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }" { (if_statement "if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_002d6040(param_1,param_3);\n      }" { (expression_statement "FUN_002d6040(param_1,param_3);" (call_expression "FUN_002d6040(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_002d6040(param_1,"(");" (call_expression "FUN_002d6040(param_1,"(")" identifier (argument_list "(param_1,"(")" ( identifier , (string_literal ""("" " string_content ") ))) ;) (while_statement "while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }" while (parenthesized_expression "(lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11)" ( (comma_expression "lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) , (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" identifier = (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) , (comma_expression "local_40[0] = lVar1, bVar11" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) , identifier))) )) (compound_statement "{\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }" { (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0)" identifier = (cast_expression "(byte *)FUN_002d6950(param_1,pbVar8,0,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" identifier (argument_list "(param_1,pbVar8,0,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (if_statement "if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          local_40[0] = -1;\n          break;\n        }" { (expression_statement "local_40[0] = -1;" (assignment_expression "local_40[0] = -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (break_statement "break;" break ;) })) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" identifier (argument_list "(param_1,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) (expression_statement "FUN_002d6040(param_1,&DAT_0038e477);" (call_expression "FUN_002d6040(param_1,&DAT_0038e477)" identifier (argument_list "(param_1,&DAT_0038e477)" ( identifier , (pointer_expression "&DAT_0038e477" & identifier) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 'a':" case (char_literal "'a'" ' character ') :) (case_statement "case 'd':" case (char_literal "'d'" ' character ') :) (case_statement "case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;" case (char_literal "'w'" ' character ') : (expression_statement "pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(char *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (byte *)0x0;\n    }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" if (parenthesized_expression "(*pcVar3 == '_')" ( (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" { (expression_statement "pbVar8 = (byte *)(pcVar3 + 1);" (assignment_expression "pbVar8 = (byte *)(pcVar3 + 1)" identifier = (cast_expression "(byte *)(pcVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + 1)" ( (binary_expression "pcVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0038e1b1);" (call_expression "FUN_002d6040(param_1,&DAT_0038e1b1)" identifier (argument_list "(param_1,&DAT_0038e1b1)" ( identifier , (pointer_expression "&DAT_0038e1b1" & identifier) ))) ;) (expression_statement "lVar1 = local_40[0] + -1;" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "bVar11 = local_40[0] == 0;" (assignment_expression "bVar11 = local_40[0] == 0" identifier = (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "local_40[0] = lVar1;" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }" { (labeled_statement "LAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);" statement_identifier : (expression_statement "FUN_002d6040(param_1,&DAT_0038e1b1);" (call_expression "FUN_002d6040(param_1,&DAT_0038e1b1)" identifier (argument_list "(param_1,&DAT_0038e1b1)" ( identifier , (pointer_expression "&DAT_0038e1b1" & identifier) ))) ;)) (if_statement "if (local_42 == 'a') {\n          return pbVar8;\n        }" if (parenthesized_expression "(local_42 == 'a')" ( (binary_expression "local_42 == 'a'" identifier == (char_literal "'a'" ' character ')) )) (compound_statement "{\n          return pbVar8;\n        }" { (return_statement "return pbVar8;" return identifier ;) })) (expression_statement "FUN_002d63a0(param_1,&local_42,1);" (call_expression "FUN_002d63a0(param_1,&local_42,1)" identifier (argument_list "(param_1,&local_42,1)" ( identifier , (pointer_expression "&local_42" & identifier) , number_literal ))) ;) (return_statement "return pbVar8;" return identifier ;) })) (if_statement "if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" if (parenthesized_expression "(pbVar8 != (byte *)0x0)" ( (binary_expression "pbVar8 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" { (expression_statement "uVar4 = (ulong)(byte)pcVar3[1];" (assignment_expression "uVar4 = (ulong)(byte)pcVar3[1]" identifier = (cast_expression "(ulong)(byte)pcVar3[1]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)pcVar3[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar3[1]" identifier [ number_literal ])))) ;) (expression_statement "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);" (assignment_expression "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar4 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar4 * 2)" ( (binary_expression "&DAT_003909e0 + uVar4 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar4 * 2" identifier * number_literal)) ))))) ;) (if_statement "if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" if (parenthesized_expression "((uVar2 & 0x100) != 0)" ( (binary_expression "(uVar2 & 0x100) != 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" { (expression_statement "uVar5 = (ulong)(byte)pcVar3[2];" (assignment_expression "uVar5 = (ulong)(byte)pcVar3[2]" identifier = (cast_expression "(ulong)(byte)pcVar3[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)pcVar3[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar3[2]" identifier [ number_literal ])))) ;) (expression_statement "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);" (assignment_expression "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar5 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar5 * 2)" ( (binary_expression "&DAT_003909e0 + uVar5 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar5 * 2" identifier * number_literal)) ))))) ;) (if_statement "if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" if (parenthesized_expression "((uVar9 & 0x100) != 0)" ( (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" ( (binary_expression "uVar9 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" { (expression_statement "pbVar10 = pbVar8;" (assignment_expression "pbVar10 = pbVar8" identifier = identifier) ;) (do_statement "do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);" do (compound_statement "{\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            }" { (expression_statement "cVar7 = (char)uVar4 + -0x30;" (assignment_expression "cVar7 = (char)uVar4 + -0x30" identifier = (binary_expression "(char)uVar4 + -0x30" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                cVar7 = (char)uVar4 + -0x37;\n              }" { (expression_statement "cVar7 = (char)uVar4 + -0x37;" (assignment_expression "cVar7 = (char)uVar4 + -0x37" identifier = (binary_expression "(char)uVar4 + -0x37" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) })) (if_statement "if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }" if (parenthesized_expression "((uVar9 & 4) == 0)" ( (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" ( (binary_expression "uVar9 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }" { (expression_statement "local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;" (assignment_expression "local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" identifier = (binary_expression "((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" (parenthesized_expression "((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U))" ( (binary_expression "(char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) - (parenthesized_expression "(-((uVar9 & 0x80) == 0) & 0x20U)" ( (binary_expression "-((uVar9 & 0x80) == 0) & 0x20U" (unary_expression "-((uVar9 & 0x80) == 0)" - (parenthesized_expression "((uVar9 & 0x80) == 0)" ( (binary_expression "(uVar9 & 0x80) == 0" (parenthesized_expression "(uVar9 & 0x80)" ( (binary_expression "uVar9 & 0x80" identifier & number_literal) )) == number_literal) ))) & number_literal) ))) )) - number_literal)) ;) }) (else_clause "else {\n                local_41 = (char)uVar5 - 0x30;\n              }" else (compound_statement "{\n                local_41 = (char)uVar5 - 0x30;\n              }" { (expression_statement "local_41 = (char)uVar5 - 0x30;" (assignment_expression "local_41 = (char)uVar5 - 0x30" identifier = (binary_expression "(char)uVar5 - 0x30" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) ;) }))) (expression_statement "local_41 = (byte)((int)cVar7 << 4) | local_41;" (assignment_expression "local_41 = (byte)((int)cVar7 << 4) | local_41" identifier = (binary_expression "(byte)((int)cVar7 << 4) | local_41" (call_expression "(byte)((int)cVar7 << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((int)cVar7 << 4)" ( (binary_expression "(int)cVar7 << 4" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) | identifier)) ;) (expression_statement "pbVar8 = pbVar10 + 2;" (assignment_expression "pbVar8 = pbVar10 + 2" identifier = (binary_expression "pbVar10 + 2" identifier + number_literal)) ;) (if_statement "if (pbVar8 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (switch_statement "switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }" switch (parenthesized_expression "(local_41)" ( identifier )) (compound_statement "{\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }" { (case_statement "case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff31);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff31)" identifier (argument_list "(param_1,&DAT_0038ff31)" ( identifier , (pointer_expression "&DAT_0038ff31" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff34);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff34)" identifier (argument_list "(param_1,&DAT_0038ff34)" ( identifier , (pointer_expression "&DAT_0038ff34" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff3d);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff3d)" identifier (argument_list "(param_1,&DAT_0038ff3d)" ( identifier , (pointer_expression "&DAT_0038ff3d" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff3a);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff3a)" identifier (argument_list "(param_1,&DAT_0038ff3a)" ( identifier , (pointer_expression "&DAT_0038ff3a" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff37);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff37)" identifier (argument_list "(param_1,&DAT_0038ff37)" ( identifier , (pointer_expression "&DAT_0038ff37" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;" default : (if_statement "if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" if (parenthesized_expression "(((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0)" ( (binary_expression "((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0" (parenthesized_expression "((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10)" ( (binary_expression "(&DAT_003909e0)[(ulong)local_41 * 2] & 0x10" (subscript_expression "(&DAT_003909e0)[(ulong)local_41 * 2]" (parenthesized_expression "(&DAT_003909e0)" ( (pointer_expression "&DAT_003909e0" & identifier) )) [ (binary_expression "(ulong)local_41 * 2" (cast_expression "(ulong)local_41" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }" { (expression_statement "FUN_002d6040(param_1,&DAT_0038ff0e);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff0e)" identifier (argument_list "(param_1,&DAT_0038ff0e)" ( identifier , (pointer_expression "&DAT_0038ff0e" & identifier) ))) ;) (expression_statement "FUN_002d63a0(param_1,pbVar10,2);" (call_expression "FUN_002d63a0(param_1,pbVar10,2)" identifier (argument_list "(param_1,pbVar10,2)" ( identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" else (compound_statement "{\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" { (expression_statement "FUN_002d63a0(param_1,&local_41,1);" (call_expression "FUN_002d63a0(param_1,&local_41,1)" identifier (argument_list "(param_1,&local_41,1)" ( identifier , (pointer_expression "&local_41" & identifier) , number_literal ))) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038529f);" (call_expression "FUN_002d6040(param_1,&DAT_0038529f)" identifier (argument_list "(param_1,&DAT_0038529f)" ( identifier , (pointer_expression "&DAT_0038529f" & identifier) ))) ;)) })) (expression_statement "lVar1 = local_40[0] + -1;" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "bVar11 = local_40[0] == 0;" (assignment_expression "bVar11 = local_40[0] == 0" identifier = (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "local_40[0] = lVar1;" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar11) goto LAB_002d6ee0;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_002d6ee0;" goto statement_identifier ;)) (expression_statement "uVar4 = (ulong)*pbVar8;" (assignment_expression "uVar4 = (ulong)*pbVar8" identifier = (binary_expression "(ulong)*pbVar8" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);" (assignment_expression "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar4 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar4 * 2)" ( (binary_expression "&DAT_003909e0 + uVar4 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar4 * 2" identifier * number_literal)) ))))) ;) (if_statement "if ((uVar2 & 0x100) == 0) break;" if (parenthesized_expression "((uVar2 & 0x100) == 0)" ( (binary_expression "(uVar2 & 0x100) == 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = (ulong)pbVar10[3];" (assignment_expression "uVar5 = (ulong)pbVar10[3]" identifier = (cast_expression "(ulong)pbVar10[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);" (assignment_expression "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar5 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar5 * 2)" ( (binary_expression "&DAT_003909e0 + uVar5 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar5 * 2" identifier * number_literal)) ))))) ;) (expression_statement "pbVar10 = pbVar8;" (assignment_expression "pbVar10 = pbVar8" identifier = identifier) ;) }) while (parenthesized_expression "((uVar9 & 0x100) != 0)" ( (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" ( (binary_expression "uVar9 & 0x100" identifier & number_literal) )) != number_literal) )) ;) })) })) })) })) (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (case_statement "case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;" case (char_literal "'c'" ' character ') : (expression_statement "pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);" (assignment_expression "pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1)" identifier = (cast_expression "(char *)FUN_002d6720(param_1,param_2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6720(param_1,param_2 + 1)" identifier (argument_list "(param_1,param_2 + 1)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0038536d);" (call_expression "FUN_002d6040(param_1,&DAT_0038536d)" identifier (argument_list "(param_1,&DAT_0038536d)" ( identifier , (pointer_expression "&DAT_0038536d" & identifier) ))) ;) (if_statement "if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }" if (parenthesized_expression "((pcVar3 != (char *)0x0) && (*pcVar3 == 'c'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (*pcVar3 == 'c')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar3 == 'c')" ( (binary_expression "*pcVar3 == 'c'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'c'" ' character ')) ))) )) (compound_statement "{\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }" { (expression_statement "pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);" (assignment_expression "pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1)" identifier = (cast_expression "(byte *)FUN_002d6720(param_1,pcVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6720(param_1,pcVar3 + 1)" identifier (argument_list "(param_1,pcVar3 + 1)" ( identifier , (binary_expression "pcVar3 + 1" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0037a19c);" (call_expression "FUN_002d6040(param_1,&DAT_0037a19c)" identifier (argument_list "(param_1,&DAT_0037a19c)" ( identifier , (pointer_expression "&DAT_0037a19c" & identifier) ))) ;) (return_statement "return pbVar8;" return identifier ;) })) (labeled_statement "switchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar8 = (byte *)0x0;" (assignment_expression "pbVar8 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (break_statement "break;" break ;)) (case_statement "case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;" case (char_literal "'e'" ' character ') : (expression_statement "pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);" (assignment_expression "pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1)" identifier = (cast_expression "(byte *)FUN_002d6720(param_1,param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6720(param_1,param_2 + 1)" identifier (argument_list "(param_1,param_2 + 1)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'i':\n    param_2 = param_2 + 1;" 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)) ;)) (case_statement "case '0':" case (char_literal "'0'" ' character ') :) (case_statement "case '1':" case (char_literal "'1'" ' character ') :) (case_statement "case '2':" case (char_literal "'2'" ' character ') :) (case_statement "case '3':" case (char_literal "'3'" ' character ') :) (case_statement "case '4':" case (char_literal "'4'" ' character ') :) (case_statement "case '5':" case (char_literal "'5'" ' character ') :) (case_statement "case '6':" case (char_literal "'6'" ' character ') :) (case_statement "case '7':" case (char_literal "'7'" ' character ') :) (case_statement "case '8':" case (char_literal "'8'" ' character ') :) (case_statement "case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;" case (char_literal "'9'" ' character ') : (expression_statement "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);" (assignment_expression "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4)" identifier = (cast_expression "(byte *)FUN_002d63d0(param_1,param_2,(int)param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d63d0(param_1,param_2,(int)param_4)" identifier (argument_list "(param_1,param_2,(int)param_4)" ( identifier , identifier , (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (return_statement "return pbVar8;" return identifier ;)) (case_statement "case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);" case (char_literal "'n'" ' character ') : (expression_statement "pbVar8 = (byte *)(param_2 + 1);" (assignment_expression "pbVar8 = (byte *)(param_2 + 1)" identifier = (cast_expression "(byte *)(param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0038ff2c);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff2c)" identifier (argument_list "(param_1,&DAT_0038ff2c)" ( identifier , (pointer_expression "&DAT_0038ff2c" & identifier) ))) ;)) })) (return_statement "return pbVar8;" return identifier ;) (labeled_statement "LAB_002d6a56:\n  local_40[0] = -1;" statement_identifier : (expression_statement "local_40[0] = -1;" (assignment_expression "local_40[0] = -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;)) (labeled_statement "LAB_002d6a5f:\n  FUN_002d6040(param_1,"]");" statement_identifier : (expression_statement "FUN_002d6040(param_1,"]");" (call_expression "FUN_002d6040(param_1,"]")" identifier (argument_list "(param_1,"]")" ( identifier , (string_literal ""]"" " string_content ") ))) ;)) (return_statement "return pbVar8;" return identifier ;) })))
(translation_unit "char * dlang_value(string *decl,char *mangled,char *name,char type)\n\n{\n  long lVar1;\n  ushort uVar2;\n  byte bVar3;\n  char *pcVar4;\n  ulong uVar5;\n  ulong uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *s;\n  bool bVar10;\n  char type_1;\n  char val;\n  long elements;\n  \n  if ((mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(type_1) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    string_append(decl,"-");\n    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);\n    break;\n  case 'S':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    if (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    string_append(decl,"+");\n    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }\nswitchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;\n    break;\n  case 'e':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    break;\n  case 'i':\n    mangled = mangled + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pcVar4 = dlang_parse_integer(decl,mangled,type);\n    return pcVar4;\n  case 'n':\n    pcVar4 = mangled + 1;\n    string_append(decl,"null");\n  }\n  return pcVar4;\nLAB_002d6a56:\n  elements = -1;\nLAB_002d6a5f:\n  string_append(decl,"]");\n  return pcVar4;\n}\n\n" (function_definition "char * dlang_value(string *decl,char *mangled,char *name,char type)\n\n{\n  long lVar1;\n  ushort uVar2;\n  byte bVar3;\n  char *pcVar4;\n  ulong uVar5;\n  ulong uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *s;\n  bool bVar10;\n  char type_1;\n  char val;\n  long elements;\n  \n  if ((mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(type_1) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    string_append(decl,"-");\n    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);\n    break;\n  case 'S':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    if (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    string_append(decl,"+");\n    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }\nswitchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;\n    break;\n  case 'e':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    break;\n  case 'i':\n    mangled = mangled + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pcVar4 = dlang_parse_integer(decl,mangled,type);\n    return pcVar4;\n  case 'n':\n    pcVar4 = mangled + 1;\n    string_append(decl,"null");\n  }\n  return pcVar4;\nLAB_002d6a56:\n  elements = -1;\nLAB_002d6a5f:\n  string_append(decl,"]");\n  return pcVar4;\n}" primitive_type (pointer_declarator "* dlang_value(string *decl,char *mangled,char *name,char type)" * (function_declarator "dlang_value(string *decl,char *mangled,char *name,char type)" identifier (parameter_list "(string *decl,char *mangled,char *name,char type)" ( (parameter_declaration "string *decl" type_identifier (pointer_declarator "*decl" * identifier)) , (parameter_declaration "char *mangled" primitive_type (pointer_declarator "*mangled" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "char type" primitive_type identifier) )))) (compound_statement "{\n  long lVar1;\n  ushort uVar2;\n  byte bVar3;\n  char *pcVar4;\n  ulong uVar5;\n  ulong uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *s;\n  bool bVar10;\n  char type_1;\n  char val;\n  long elements;\n  \n  if ((mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(type_1) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    string_append(decl,"-");\n    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);\n    break;\n  case 'S':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    if (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    string_append(decl,"+");\n    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }\nswitchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;\n    break;\n  case 'e':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    break;\n  case 'i':\n    mangled = mangled + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pcVar4 = dlang_parse_integer(decl,mangled,type);\n    return pcVar4;\n  case 'n':\n    pcVar4 = mangled + 1;\n    string_append(decl,"null");\n  }\n  return pcVar4;\nLAB_002d6a56:\n  elements = -1;\nLAB_002d6a5f:\n  string_append(decl,"]");\n  return pcVar4;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "ushort uVar9;" type_identifier identifier ;) (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "char type_1;" primitive_type identifier ;) (declaration "char val;" primitive_type identifier ;) (declaration "long elements;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0'))\n  goto switchD_002d6986_caseD_3a;" if (parenthesized_expression "((mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0'))" ( (binary_expression "(mangled == (char *)0x0) || (type_1 = *mangled, type_1 == '\0')" (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)) )) || (parenthesized_expression "(type_1 = *mangled, type_1 == '\0')" ( (comma_expression "type_1 = *mangled, type_1 == '\0'" (assignment_expression "type_1 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) , (binary_expression "type_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (switch_statement "switch(type_1) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    string_append(decl,"-");\n    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);\n    break;\n  case 'S':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    if (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    string_append(decl,"+");\n    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }\nswitchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;\n    break;\n  case 'e':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    break;\n  case 'i':\n    mangled = mangled + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pcVar4 = dlang_parse_integer(decl,mangled,type);\n    return pcVar4;\n  case 'n':\n    pcVar4 = mangled + 1;\n    string_append(decl,"null");\n  }" switch (parenthesized_expression "(type_1)" ( identifier )) (compound_statement "{\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    string_append(decl,"-");\n    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);\n    break;\n  case 'S':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    if (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    string_append(decl,"+");\n    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }\nswitchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;\n    break;\n  case 'e':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    break;\n  case 'i':\n    mangled = mangled + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pcVar4 = dlang_parse_integer(decl,mangled,type);\n    return pcVar4;\n  case 'n':\n    pcVar4 = mangled + 1;\n    string_append(decl,"null");\n  }" { (case_statement "default:\n    goto switchD_002d6986_caseD_3a;" default : (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (case_statement "case 'A':\n    if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    goto LAB_002d6a5f;" case (char_literal "'A'" ' character ') : (if_statement "if (type == 'H') {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }\n    else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }" if (parenthesized_expression "(type == 'H')" ( (binary_expression "type == 'H'" identifier == (char_literal "'H'" ' character ')) )) (compound_statement "{\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }" { (expression_statement "pcVar4 = dlang_number(mangled + 1,&elements);" (assignment_expression "pcVar4 = dlang_number(mangled + 1,&elements)" identifier = (call_expression "dlang_number(mangled + 1,&elements)" identifier (argument_list "(mangled + 1,&elements)" ( (binary_expression "mangled + 1" identifier + number_literal) , (pointer_expression "&elements" & identifier) )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (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,"[");" (call_expression "string_append(decl,"[")" identifier (argument_list "(decl,"[")" ( identifier , (string_literal ""["" " string_content ") ))) ;) (while_statement "while (bVar10 = elements != 0, elements = elements + -1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }" while (parenthesized_expression "(bVar10 = elements != 0, elements = elements + -1, bVar10)" ( (comma_expression "bVar10 = elements != 0, elements = elements + -1, bVar10" (assignment_expression "bVar10 = elements != 0" identifier = (binary_expression "elements != 0" identifier != number_literal)) , (comma_expression "elements = elements + -1, bVar10" (assignment_expression "elements = elements + -1" identifier = (binary_expression "elements + -1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        string_append(decl,":");\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }" { (expression_statement "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');" (assignment_expression "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier = (call_expression "dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier (argument_list "(decl,pcVar4,(char *)0x0,'\0')" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (char_literal "'\0'" ' escape_sequence ') )))) ;) (expression_statement "string_append(decl,":");" (call_expression "string_append(decl,":")" identifier (argument_list "(decl,":")" ( identifier , (string_literal "":"" " string_content ") ))) ;) (expression_statement "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');" (assignment_expression "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier = (call_expression "dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier (argument_list "(decl,pcVar4,(char *)0x0,'\0')" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (char_literal "'\0'" ' escape_sequence ') )))) ;) (if_statement "if (elements == 0) goto LAB_002d6a56;" if (parenthesized_expression "(elements == 0)" ( (binary_expression "elements == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d6a56;" goto statement_identifier ;)) (expression_statement "string_append(decl,", ");" (call_expression "string_append(decl,", ")" identifier (argument_list "(decl,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) }) (else_clause "else {\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }" else (compound_statement "{\n      pcVar4 = dlang_number(mangled + 1,&elements);\n      if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }\n      string_append(decl,"[");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }\n    }" { (expression_statement "pcVar4 = dlang_number(mangled + 1,&elements);" (assignment_expression "pcVar4 = dlang_number(mangled + 1,&elements)" identifier = (call_expression "dlang_number(mangled + 1,&elements)" identifier (argument_list "(mangled + 1,&elements)" ( (binary_expression "mangled + 1" identifier + number_literal) , (pointer_expression "&elements" & identifier) )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n        return (char *)0x0;\n      }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (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,"[");" (call_expression "string_append(decl,"[")" identifier (argument_list "(decl,"[")" ( identifier , (string_literal ""["" " string_content ") ))) ;) (while_statement "while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }" while (parenthesized_expression "(lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10)" ( (comma_expression "lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10" (assignment_expression "lVar1 = elements + -1" identifier = (binary_expression "elements + -1" identifier + number_literal)) , (comma_expression "bVar10 = elements != 0, elements = lVar1, bVar10" (assignment_expression "bVar10 = elements != 0" identifier = (binary_expression "elements != 0" identifier != number_literal)) , (comma_expression "elements = lVar1, bVar10" (assignment_expression "elements = lVar1" identifier = identifier) , identifier))) )) (compound_statement "{\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) goto LAB_002d6a56;\n        string_append(decl,", ");\n      }" { (expression_statement "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');" (assignment_expression "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier = (call_expression "dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier (argument_list "(decl,pcVar4,(char *)0x0,'\0')" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (char_literal "'\0'" ' escape_sequence ') )))) ;) (if_statement "if (elements == 0) goto LAB_002d6a56;" if (parenthesized_expression "(elements == 0)" ( (binary_expression "elements == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d6a56;" goto statement_identifier ;)) (expression_statement "string_append(decl,", ");" (call_expression "string_append(decl,", ")" identifier (argument_list "(decl,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) }))) (goto_statement "goto LAB_002d6a5f;" goto statement_identifier ;)) (case_statement "case 'N':\n    string_append(decl,"-");\n    pcVar4 = dlang_parse_integer(decl,mangled + 1,type);\n    break;" case (char_literal "'N'" ' character ') : (expression_statement "string_append(decl,"-");" (call_expression "string_append(decl,"-")" identifier (argument_list "(decl,"-")" ( identifier , (string_literal ""-"" " string_content ") ))) ;) (expression_statement "pcVar4 = dlang_parse_integer(decl,mangled + 1,type);" (assignment_expression "pcVar4 = dlang_parse_integer(decl,mangled + 1,type)" identifier = (call_expression "dlang_parse_integer(decl,mangled + 1,type)" identifier (argument_list "(decl,mangled + 1,type)" ( identifier , (binary_expression "mangled + 1" identifier + number_literal) , identifier )))) ;) (break_statement "break;" break ;)) (case_statement "case 'S':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }\n    break;" case (char_literal "'S'" ' character ') : (expression_statement "pcVar4 = dlang_number(mangled + 1,&elements);" (assignment_expression "pcVar4 = dlang_number(mangled + 1,&elements)" identifier = (call_expression "dlang_number(mangled + 1,&elements)" identifier (argument_list "(mangled + 1,&elements)" ( (binary_expression "mangled + 1" identifier + number_literal) , (pointer_expression "&elements" & identifier) )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (name != (char *)0x0) {\n        string_append(decl,name);\n      }\n      string_append(decl,"(");\n      while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }\n      string_append(decl,")");\n    }" { (if_statement "if (name != (char *)0x0) {\n        string_append(decl,name);\n      }" if (parenthesized_expression "(name != (char *)0x0)" ( (binary_expression "name != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        string_append(decl,name);\n      }" { (expression_statement "string_append(decl,name);" (call_expression "string_append(decl,name)" identifier (argument_list "(decl,name)" ( identifier , identifier ))) ;) })) (expression_statement "string_append(decl,"(");" (call_expression "string_append(decl,"(")" identifier (argument_list "(decl,"(")" ( identifier , (string_literal ""("" " string_content ") ))) ;) (while_statement "while (lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10) {\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }" while (parenthesized_expression "(lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10)" ( (comma_expression "lVar1 = elements + -1, bVar10 = elements != 0, elements = lVar1, bVar10" (assignment_expression "lVar1 = elements + -1" identifier = (binary_expression "elements + -1" identifier + number_literal)) , (comma_expression "bVar10 = elements != 0, elements = lVar1, bVar10" (assignment_expression "bVar10 = elements != 0" identifier = (binary_expression "elements != 0" identifier != number_literal)) , (comma_expression "elements = lVar1, bVar10" (assignment_expression "elements = lVar1" identifier = identifier) , identifier))) )) (compound_statement "{\n        pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');\n        if (elements == 0) {\n          elements = -1;\n          break;\n        }\n        string_append(decl,", ");\n      }" { (expression_statement "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0');" (assignment_expression "pcVar4 = dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier = (call_expression "dlang_value(decl,pcVar4,(char *)0x0,'\0')" identifier (argument_list "(decl,pcVar4,(char *)0x0,'\0')" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (char_literal "'\0'" ' escape_sequence ') )))) ;) (if_statement "if (elements == 0) {\n          elements = -1;\n          break;\n        }" if (parenthesized_expression "(elements == 0)" ( (binary_expression "elements == 0" identifier == number_literal) )) (compound_statement "{\n          elements = -1;\n          break;\n        }" { (expression_statement "elements = -1;" (assignment_expression "elements = -1" identifier = 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 ") ))) ;) })) (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 'a':" case (char_literal "'a'" ' character ') :) (case_statement "case 'd':" case (char_literal "'d'" ' character ') :) (case_statement "case 'w':\n    pcVar4 = dlang_number(mangled + 1,&elements);\n    if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }\n    if (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;" case (char_literal "'w'" ' character ') : (expression_statement "pcVar4 = dlang_number(mangled + 1,&elements);" (assignment_expression "pcVar4 = dlang_number(mangled + 1,&elements)" identifier = (call_expression "dlang_number(mangled + 1,&elements)" identifier (argument_list "(mangled + 1,&elements)" ( (binary_expression "mangled + 1" identifier + number_literal) , (pointer_expression "&elements" & identifier) )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n      return (char *)0x0;\n    }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (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 (*pcVar4 == '_') {\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" if (parenthesized_expression "(*pcVar4 == '_')" ( (binary_expression "*pcVar4 == '_'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n      pbVar8 = (byte *)(pcVar4 + 1);\n      string_append(decl,"\"");\n      lVar1 = elements + -1;\n      bVar10 = elements == 0;\n      elements = lVar1;\n      if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" { (expression_statement "pbVar8 = (byte *)(pcVar4 + 1);" (assignment_expression "pbVar8 = (byte *)(pcVar4 + 1)" identifier = (cast_expression "(byte *)(pcVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar4 + 1)" ( (binary_expression "pcVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "string_append(decl,"\"");" (call_expression "string_append(decl,"\"")" identifier (argument_list "(decl,"\"")" ( identifier , (string_literal ""\""" " escape_sequence ") ))) ;) (expression_statement "lVar1 = elements + -1;" (assignment_expression "lVar1 = elements + -1" identifier = (binary_expression "elements + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = elements == 0;" (assignment_expression "bVar10 = elements == 0" identifier = (binary_expression "elements == 0" identifier == number_literal)) ;) (expression_statement "elements = lVar1;" (assignment_expression "elements = lVar1" identifier = identifier) ;) (if_statement "if (bVar10) {\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\nLAB_002d6ee0:\n        string_append(decl,"\"");\n        if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }\n        string_appendn(decl,&type_1,1);\n        return (char *)pbVar8;\n      }" { (labeled_statement "LAB_002d6ee0:\n        string_append(decl,"\"");" statement_identifier : (expression_statement "string_append(decl,"\"");" (call_expression "string_append(decl,"\"")" identifier (argument_list "(decl,"\"")" ( identifier , (string_literal ""\""" " escape_sequence ") ))) ;)) (if_statement "if (type_1 == 'a') {\n          return (char *)pbVar8;\n        }" if (parenthesized_expression "(type_1 == 'a')" ( (binary_expression "type_1 == 'a'" identifier == (char_literal "'a'" ' character ')) )) (compound_statement "{\n          return (char *)pbVar8;\n        }" { (return_statement "return (char *)pbVar8;" return (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (expression_statement "string_appendn(decl,&type_1,1);" (call_expression "string_appendn(decl,&type_1,1)" identifier (argument_list "(decl,&type_1,1)" ( identifier , (pointer_expression "&type_1" & identifier) , number_literal ))) ;) (return_statement "return (char *)pbVar8;" return (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (if_statement "if (pbVar8 != (byte *)0x0) {\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" if (parenthesized_expression "(pbVar8 != (byte *)0x0)" ( (binary_expression "pbVar8 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar5 = (ulong)(byte)pcVar4[1];\n        uVar2 = _sch_istable[uVar5];\n        if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" { (expression_statement "uVar5 = (ulong)(byte)pcVar4[1];" (assignment_expression "uVar5 = (ulong)(byte)pcVar4[1]" identifier = (cast_expression "(ulong)(byte)pcVar4[1]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)pcVar4[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar4[1]" identifier [ number_literal ])))) ;) (expression_statement "uVar2 = _sch_istable[uVar5];" (assignment_expression "uVar2 = _sch_istable[uVar5]" identifier = (subscript_expression "_sch_istable[uVar5]" identifier [ identifier ])) ;) (if_statement "if ((uVar2 & 0x100) != 0) {\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" if (parenthesized_expression "((uVar2 & 0x100) != 0)" ( (binary_expression "(uVar2 & 0x100) != 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar6 = (ulong)(byte)pcVar4[2];\n          uVar9 = _sch_istable[uVar6];\n          if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" { (expression_statement "uVar6 = (ulong)(byte)pcVar4[2];" (assignment_expression "uVar6 = (ulong)(byte)pcVar4[2]" identifier = (cast_expression "(ulong)(byte)pcVar4[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)pcVar4[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar4[2]" identifier [ number_literal ])))) ;) (expression_statement "uVar9 = _sch_istable[uVar6];" (assignment_expression "uVar9 = _sch_istable[uVar6]" identifier = (subscript_expression "_sch_istable[uVar6]" identifier [ identifier ])) ;) (if_statement "if ((uVar9 & 0x100) != 0) {\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" if (parenthesized_expression "((uVar9 & 0x100) != 0)" ( (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" ( (binary_expression "uVar9 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            s = pbVar8;\n            do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" { (expression_statement "s = pbVar8;" (assignment_expression "s = pbVar8" identifier = identifier) ;) (do_statement "do {\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            } while ((uVar9 & 0x100) != 0);" do (compound_statement "{\n              cVar7 = (char)uVar5 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }\n              val = (byte)((int)cVar7 << 4) | bVar3;\n              pbVar8 = s + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }\n              lVar1 = elements + -1;\n              bVar10 = elements == 0;\n              elements = lVar1;\n              if (bVar10) goto LAB_002d6ee0;\n              uVar5 = (ulong)*pbVar8;\n              uVar2 = _sch_istable[uVar5];\n              if ((uVar2 & 0x100) == 0) break;\n              uVar6 = (ulong)s[3];\n              uVar9 = _sch_istable[uVar6];\n              s = pbVar8;\n            }" { (expression_statement "cVar7 = (char)uVar5 + -0x30;" (assignment_expression "cVar7 = (char)uVar5 + -0x30" identifier = (binary_expression "(char)uVar5 + -0x30" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar5 + -0x37;\n              }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                cVar7 = (char)uVar5 + -0x37;\n              }" { (expression_statement "cVar7 = (char)uVar5 + -0x37;" (assignment_expression "cVar7 = (char)uVar5 + -0x37" identifier = (binary_expression "(char)uVar5 + -0x37" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) })) (if_statement "if ((uVar9 & 4) == 0) {\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                bVar3 = (char)uVar6 - 0x30;\n              }" if (parenthesized_expression "((uVar9 & 4) == 0)" ( (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" ( (binary_expression "uVar9 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }" { (expression_statement "bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;" (assignment_expression "bVar3 = ((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" identifier = (binary_expression "((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" (parenthesized_expression "((char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U))" ( (binary_expression "(char)uVar6 - (-((uVar9 & 0x80) == 0) & 0x20U)" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) - (parenthesized_expression "(-((uVar9 & 0x80) == 0) & 0x20U)" ( (binary_expression "-((uVar9 & 0x80) == 0) & 0x20U" (unary_expression "-((uVar9 & 0x80) == 0)" - (parenthesized_expression "((uVar9 & 0x80) == 0)" ( (binary_expression "(uVar9 & 0x80) == 0" (parenthesized_expression "(uVar9 & 0x80)" ( (binary_expression "uVar9 & 0x80" identifier & number_literal) )) == number_literal) ))) & number_literal) ))) )) - number_literal)) ;) }) (else_clause "else {\n                bVar3 = (char)uVar6 - 0x30;\n              }" else (compound_statement "{\n                bVar3 = (char)uVar6 - 0x30;\n              }" { (expression_statement "bVar3 = (char)uVar6 - 0x30;" (assignment_expression "bVar3 = (char)uVar6 - 0x30" identifier = (binary_expression "(char)uVar6 - 0x30" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) ;) }))) (expression_statement "val = (byte)((int)cVar7 << 4) | bVar3;" (assignment_expression "val = (byte)((int)cVar7 << 4) | bVar3" identifier = (binary_expression "(byte)((int)cVar7 << 4) | bVar3" (call_expression "(byte)((int)cVar7 << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((int)cVar7 << 4)" ( (binary_expression "(int)cVar7 << 4" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) | identifier)) ;) (expression_statement "pbVar8 = s + 2;" (assignment_expression "pbVar8 = s + 2" identifier = (binary_expression "s + 2" identifier + number_literal)) ;) (if_statement "if (pbVar8 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (switch_statement "switch(val) {\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }" switch (parenthesized_expression "(val)" ( identifier )) (compound_statement "{\n              case '\t':\n                string_append(decl,"\\t");\n                break;\n              case '\n':\n                string_append(decl,"\\n");\n                break;\n              case '\v':\n                string_append(decl,"\\v");\n                break;\n              case '\f':\n                string_append(decl,"\\f");\n                break;\n              case '\r':\n                string_append(decl,"\\r");\n                break;\n              default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;\n              case ' ':\n                string_append(decl," ");\n              }" { (case_statement "case '\t':\n                string_append(decl,"\\t");\n                break;" case (char_literal "'\t'" ' escape_sequence ') : (expression_statement "string_append(decl,"\\t");" (call_expression "string_append(decl,"\\t")" identifier (argument_list "(decl,"\\t")" ( identifier , (string_literal ""\\t"" " escape_sequence string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case '\n':\n                string_append(decl,"\\n");\n                break;" case (char_literal "'\n'" ' escape_sequence ') : (expression_statement "string_append(decl,"\\n");" (call_expression "string_append(decl,"\\n")" identifier (argument_list "(decl,"\\n")" ( identifier , (string_literal ""\\n"" " escape_sequence string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case '\v':\n                string_append(decl,"\\v");\n                break;" case (char_literal "'\v'" ' escape_sequence ') : (expression_statement "string_append(decl,"\\v");" (call_expression "string_append(decl,"\\v")" identifier (argument_list "(decl,"\\v")" ( identifier , (string_literal ""\\v"" " escape_sequence string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case '\f':\n                string_append(decl,"\\f");\n                break;" case (char_literal "'\f'" ' escape_sequence ') : (expression_statement "string_append(decl,"\\f");" (call_expression "string_append(decl,"\\f")" identifier (argument_list "(decl,"\\f")" ( identifier , (string_literal ""\\f"" " escape_sequence string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "case '\r':\n                string_append(decl,"\\r");\n                break;" case (char_literal "'\r'" ' escape_sequence ') : (expression_statement "string_append(decl,"\\r");" (call_expression "string_append(decl,"\\r")" identifier (argument_list "(decl,"\\r")" ( identifier , (string_literal ""\\r"" " escape_sequence string_content ") ))) ;) (break_statement "break;" break ;)) (case_statement "default:\n                if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }\n                break;" default : (if_statement "if ((_sch_istable[(byte)val] & 0x10) == 0) {\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }\n                else {\n                  string_appendn(decl,&val,1);\n                }" if (parenthesized_expression "((_sch_istable[(byte)val] & 0x10) == 0)" ( (binary_expression "(_sch_istable[(byte)val] & 0x10) == 0" (parenthesized_expression "(_sch_istable[(byte)val] & 0x10)" ( (binary_expression "_sch_istable[(byte)val] & 0x10" (subscript_expression "_sch_istable[(byte)val]" identifier [ (cast_expression "(byte)val" ( (type_descriptor "byte" type_identifier) ) identifier) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                  string_append(decl,"\\x");\n                  string_appendn(decl,(char *)s,2);\n                }" { (expression_statement "string_append(decl,"\\x");" (call_expression "string_append(decl,"\\x")" identifier (argument_list "(decl,"\\x")" ( identifier , (string_literal ""\\x"" " escape_sequence string_content ") ))) ;) (expression_statement "string_appendn(decl,(char *)s,2);" (call_expression "string_appendn(decl,(char *)s,2)" identifier (argument_list "(decl,(char *)s,2)" ( identifier , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) }) (else_clause "else {\n                  string_appendn(decl,&val,1);\n                }" else (compound_statement "{\n                  string_appendn(decl,&val,1);\n                }" { (expression_statement "string_appendn(decl,&val,1);" (call_expression "string_appendn(decl,&val,1)" identifier (argument_list "(decl,&val,1)" ( identifier , (pointer_expression "&val" & identifier) , number_literal ))) ;) }))) (break_statement "break;" break ;)) (case_statement "case ' ':\n                string_append(decl," ");" case (char_literal "' '" ' character ') : (expression_statement "string_append(decl," ");" (call_expression "string_append(decl," ")" identifier (argument_list "(decl," ")" ( identifier , (string_literal "" "" " string_content ") ))) ;)) })) (expression_statement "lVar1 = elements + -1;" (assignment_expression "lVar1 = elements + -1" identifier = (binary_expression "elements + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = elements == 0;" (assignment_expression "bVar10 = elements == 0" identifier = (binary_expression "elements == 0" identifier == number_literal)) ;) (expression_statement "elements = lVar1;" (assignment_expression "elements = lVar1" identifier = identifier) ;) (if_statement "if (bVar10) goto LAB_002d6ee0;" if (parenthesized_expression "(bVar10)" ( identifier )) (goto_statement "goto LAB_002d6ee0;" goto statement_identifier ;)) (expression_statement "uVar5 = (ulong)*pbVar8;" (assignment_expression "uVar5 = (ulong)*pbVar8" identifier = (binary_expression "(ulong)*pbVar8" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "uVar2 = _sch_istable[uVar5];" (assignment_expression "uVar2 = _sch_istable[uVar5]" identifier = (subscript_expression "_sch_istable[uVar5]" identifier [ identifier ])) ;) (if_statement "if ((uVar2 & 0x100) == 0) break;" if (parenthesized_expression "((uVar2 & 0x100) == 0)" ( (binary_expression "(uVar2 & 0x100) == 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = (ulong)s[3];" (assignment_expression "uVar6 = (ulong)s[3]" identifier = (cast_expression "(ulong)s[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "s[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = _sch_istable[uVar6];" (assignment_expression "uVar9 = _sch_istable[uVar6]" identifier = (subscript_expression "_sch_istable[uVar6]" identifier [ identifier ])) ;) (expression_statement "s = pbVar8;" (assignment_expression "s = pbVar8" identifier = identifier) ;) }) while (parenthesized_expression "((uVar9 & 0x100) != 0)" ( (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" ( (binary_expression "uVar9 & 0x100" identifier & number_literal) )) != number_literal) )) ;) })) })) })) })) (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (case_statement "case 'c':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    string_append(decl,"+");\n    if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }\nswitchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;\n    break;" case (char_literal "'c'" ' character ') : (expression_statement "pcVar4 = dlang_parse_real(decl,mangled + 1);" (assignment_expression "pcVar4 = dlang_parse_real(decl,mangled + 1)" identifier = (call_expression "dlang_parse_real(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 ") ))) ;) (if_statement "if ((pcVar4 != (char *)0x0) && (*pcVar4 == 'c')) {\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }" if (parenthesized_expression "((pcVar4 != (char *)0x0) && (*pcVar4 == 'c'))" ( (binary_expression "(pcVar4 != (char *)0x0) && (*pcVar4 == 'c')" (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar4 == 'c')" ( (binary_expression "*pcVar4 == 'c'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'c'" ' character ')) ))) )) (compound_statement "{\n      pcVar4 = dlang_parse_real(decl,pcVar4 + 1);\n      string_append(decl,"i");\n      return pcVar4;\n    }" { (expression_statement "pcVar4 = dlang_parse_real(decl,pcVar4 + 1);" (assignment_expression "pcVar4 = dlang_parse_real(decl,pcVar4 + 1)" identifier = (call_expression "dlang_parse_real(decl,pcVar4 + 1)" identifier (argument_list "(decl,pcVar4 + 1)" ( identifier , (binary_expression "pcVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "string_append(decl,"i");" (call_expression "string_append(decl,"i")" identifier (argument_list "(decl,"i")" ( identifier , (string_literal ""i"" " string_content ") ))) ;) (return_statement "return pcVar4;" return identifier ;) })) (labeled_statement "switchD_002d6986_caseD_3a:\n    pcVar4 = (char *)0x0;" statement_identifier : (expression_statement "pcVar4 = (char *)0x0;" (assignment_expression "pcVar4 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (break_statement "break;" break ;)) (case_statement "case 'e':\n    pcVar4 = dlang_parse_real(decl,mangled + 1);\n    break;" case (char_literal "'e'" ' character ') : (expression_statement "pcVar4 = dlang_parse_real(decl,mangled + 1);" (assignment_expression "pcVar4 = dlang_parse_real(decl,mangled + 1)" identifier = (call_expression "dlang_parse_real(decl,mangled + 1)" identifier (argument_list "(decl,mangled + 1)" ( identifier , (binary_expression "mangled + 1" identifier + number_literal) )))) ;) (break_statement "break;" break ;)) (case_statement "case 'i':\n    mangled = mangled + 1;" case (char_literal "'i'" ' character ') : (expression_statement "mangled = mangled + 1;" (assignment_expression "mangled = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;)) (case_statement "case '0':" case (char_literal "'0'" ' character ') :) (case_statement "case '1':" case (char_literal "'1'" ' character ') :) (case_statement "case '2':" case (char_literal "'2'" ' character ') :) (case_statement "case '3':" case (char_literal "'3'" ' character ') :) (case_statement "case '4':" case (char_literal "'4'" ' character ') :) (case_statement "case '5':" case (char_literal "'5'" ' character ') :) (case_statement "case '6':" case (char_literal "'6'" ' character ') :) (case_statement "case '7':" case (char_literal "'7'" ' character ') :) (case_statement "case '8':" case (char_literal "'8'" ' character ') :) (case_statement "case '9':\n    pcVar4 = dlang_parse_integer(decl,mangled,type);\n    return pcVar4;" case (char_literal "'9'" ' character ') : (expression_statement "pcVar4 = dlang_parse_integer(decl,mangled,type);" (assignment_expression "pcVar4 = dlang_parse_integer(decl,mangled,type)" identifier = (call_expression "dlang_parse_integer(decl,mangled,type)" identifier (argument_list "(decl,mangled,type)" ( identifier , identifier , identifier )))) ;) (return_statement "return pcVar4;" return identifier ;)) (case_statement "case 'n':\n    pcVar4 = mangled + 1;\n    string_append(decl,"null");" case (char_literal "'n'" ' character ') : (expression_statement "pcVar4 = mangled + 1;" (assignment_expression "pcVar4 = mangled + 1" identifier = (binary_expression "mangled + 1" identifier + number_literal)) ;) (expression_statement "string_append(decl,"null");" (call_expression "string_append(decl,"null")" identifier (argument_list "(decl,"null")" ( identifier , (string_literal ""null"" " string_content ") ))) ;)) })) (return_statement "return pcVar4;" return identifier ;) (labeled_statement "LAB_002d6a56:\n  elements = -1;" statement_identifier : (expression_statement "elements = -1;" (assignment_expression "elements = -1" identifier = number_literal) ;)) (labeled_statement "LAB_002d6a5f:\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 ") ))) ;)) (return_statement "return pcVar4;" return identifier ;) })))
(translation_unit "byte * FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)\n\n{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}\n\n" (function_definition "byte * FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)\n\n{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}" type_identifier (pointer_declarator "* FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)" * (function_declarator "FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)" identifier (parameter_list "(undefined8 param_1,char *param_2,long param_3,char param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char param_4" primitive_type identifier) )))) (compound_statement "{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "ushort uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "char local_42;" primitive_type identifier ;) (declaration "byte local_41;" type_identifier identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (if_statement "if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;" if (parenthesized_expression "((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))" ( (binary_expression "(param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0')" (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)) )) || (parenthesized_expression "(local_42 = *param_2, local_42 == '\0')" ( (comma_expression "local_42 = *param_2, local_42 == '\0'" (assignment_expression "local_42 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) , (binary_expression "local_42 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (switch_statement "switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }" switch (parenthesized_expression "(local_42)" ( identifier )) (compound_statement "{\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }" { (case_statement "default:\n    goto switchD_002d6986_caseD_3a;" default : (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (case_statement "case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;" case (char_literal "'A'" ' character ') : (if_statement "if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" if (parenthesized_expression "(param_4 == 'H')" ( (binary_expression "param_4 == 'H'" identifier == (char_literal "'H'" ' character ')) )) (compound_statement "{\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" { (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_002d6040(param_1,&DAT_003763cb);" (call_expression "FUN_002d6040(param_1,&DAT_003763cb)" identifier (argument_list "(param_1,&DAT_003763cb)" ( identifier , (pointer_expression "&DAT_003763cb" & identifier) ))) ;) (while_statement "while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" while (parenthesized_expression "(bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11)" ( (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" identifier = (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) , (comma_expression "local_40[0] = local_40[0] + -1, bVar11" (assignment_expression "local_40[0] = local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) , identifier)) )) (compound_statement "{\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" { (expression_statement "uVar6 = FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "uVar6 = FUN_002d6950(param_1,pbVar8,0,0)" identifier = (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" identifier (argument_list "(param_1,pbVar8,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0037aef2);" (call_expression "FUN_002d6040(param_1,&DAT_0037aef2)" identifier (argument_list "(param_1,&DAT_0037aef2)" ( identifier , (pointer_expression "&DAT_0037aef2" & identifier) ))) ;) (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0)" identifier = (cast_expression "(byte *)FUN_002d6950(param_1,uVar6,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6950(param_1,uVar6,0)" identifier (argument_list "(param_1,uVar6,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (local_40[0] == 0) goto LAB_002d6a56;" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002d6a56;" goto statement_identifier ;)) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" identifier (argument_list "(param_1,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) }) (else_clause "else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" else (compound_statement "{\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" { (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_002d6040(param_1,&DAT_003763cb);" (call_expression "FUN_002d6040(param_1,&DAT_003763cb)" identifier (argument_list "(param_1,&DAT_003763cb)" ( identifier , (pointer_expression "&DAT_003763cb" & identifier) ))) ;) (while_statement "while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" while (parenthesized_expression "(lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11)" ( (comma_expression "lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) , (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" identifier = (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) , (comma_expression "local_40[0] = lVar1, bVar11" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) , identifier))) )) (compound_statement "{\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" { (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0)" identifier = (cast_expression "(byte *)FUN_002d6950(param_1,pbVar8,0,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" identifier (argument_list "(param_1,pbVar8,0,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (if_statement "if (local_40[0] == 0) goto LAB_002d6a56;" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002d6a56;" goto statement_identifier ;)) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" identifier (argument_list "(param_1,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) }))) (goto_statement "goto LAB_002d6a5f;" goto statement_identifier ;)) (case_statement "case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;" case (char_literal "'N'" ' character ') : (expression_statement "FUN_002d6040(param_1,&DAT_00379a38);" (call_expression "FUN_002d6040(param_1,&DAT_00379a38)" identifier (argument_list "(param_1,&DAT_00379a38)" ( identifier , (pointer_expression "&DAT_00379a38" & identifier) ))) ;) (expression_statement "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);" (assignment_expression "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" identifier = (cast_expression "(byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" identifier (argument_list "(param_1,param_2 + 1,(int)param_4)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) , (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;" case (char_literal "'S'" ' character ') : (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }" if (parenthesized_expression "(pbVar8 != (byte *)0x0)" ( (binary_expression "pbVar8 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }" { (if_statement "if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_002d6040(param_1,param_3);\n      }" { (expression_statement "FUN_002d6040(param_1,param_3);" (call_expression "FUN_002d6040(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_002d6040(param_1,"(");" (call_expression "FUN_002d6040(param_1,"(")" identifier (argument_list "(param_1,"(")" ( identifier , (string_literal ""("" " string_content ") ))) ;) (while_statement "while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }" while (parenthesized_expression "(lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11)" ( (comma_expression "lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) , (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" identifier = (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) , (comma_expression "local_40[0] = lVar1, bVar11" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) , identifier))) )) (compound_statement "{\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }" { (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0)" identifier = (cast_expression "(byte *)FUN_002d6950(param_1,pbVar8,0,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" identifier (argument_list "(param_1,pbVar8,0,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (if_statement "if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          local_40[0] = -1;\n          break;\n        }" { (expression_statement "local_40[0] = -1;" (assignment_expression "local_40[0] = -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (break_statement "break;" break ;) })) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" identifier (argument_list "(param_1,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) })) (expression_statement "FUN_002d6040(param_1,&DAT_0038e477);" (call_expression "FUN_002d6040(param_1,&DAT_0038e477)" identifier (argument_list "(param_1,&DAT_0038e477)" ( identifier , (pointer_expression "&DAT_0038e477" & identifier) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 'a':" case (char_literal "'a'" ' character ') :) (case_statement "case 'd':" case (char_literal "'d'" ' character ') :) (case_statement "case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;" case (char_literal "'w'" ' character ') : (expression_statement "pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40)" identifier = (cast_expression "(char *)FUN_002d5f30(param_2 + 1,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d5f30(param_2 + 1,local_40)" identifier (argument_list "(param_2 + 1,local_40)" ( (binary_expression "param_2 + 1" identifier + number_literal) , identifier ))))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (byte *)0x0;\n    }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" if (parenthesized_expression "(*pcVar3 == '_')" ( (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" { (expression_statement "pbVar8 = (byte *)(pcVar3 + 1);" (assignment_expression "pbVar8 = (byte *)(pcVar3 + 1)" identifier = (cast_expression "(byte *)(pcVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + 1)" ( (binary_expression "pcVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0038e1b1);" (call_expression "FUN_002d6040(param_1,&DAT_0038e1b1)" identifier (argument_list "(param_1,&DAT_0038e1b1)" ( identifier , (pointer_expression "&DAT_0038e1b1" & identifier) ))) ;) (expression_statement "lVar1 = local_40[0] + -1;" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "bVar11 = local_40[0] == 0;" (assignment_expression "bVar11 = local_40[0] == 0" identifier = (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "local_40[0] = lVar1;" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }" { (labeled_statement "LAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);" statement_identifier : (expression_statement "FUN_002d6040(param_1,&DAT_0038e1b1);" (call_expression "FUN_002d6040(param_1,&DAT_0038e1b1)" identifier (argument_list "(param_1,&DAT_0038e1b1)" ( identifier , (pointer_expression "&DAT_0038e1b1" & identifier) ))) ;)) (if_statement "if (local_42 == 'a') {\n          return pbVar8;\n        }" if (parenthesized_expression "(local_42 == 'a')" ( (binary_expression "local_42 == 'a'" identifier == (char_literal "'a'" ' character ')) )) (compound_statement "{\n          return pbVar8;\n        }" { (return_statement "return pbVar8;" return identifier ;) })) (expression_statement "FUN_002d63a0(param_1,&local_42,1);" (call_expression "FUN_002d63a0(param_1,&local_42,1)" identifier (argument_list "(param_1,&local_42,1)" ( identifier , (pointer_expression "&local_42" & identifier) , number_literal ))) ;) (return_statement "return pbVar8;" return identifier ;) })) (if_statement "if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" if (parenthesized_expression "(pbVar8 != (byte *)0x0)" ( (binary_expression "pbVar8 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" { (expression_statement "uVar4 = (ulong)(byte)pcVar3[1];" (assignment_expression "uVar4 = (ulong)(byte)pcVar3[1]" identifier = (cast_expression "(ulong)(byte)pcVar3[1]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)pcVar3[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar3[1]" identifier [ number_literal ])))) ;) (expression_statement "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);" (assignment_expression "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar4 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar4 * 2)" ( (binary_expression "&DAT_003909e0 + uVar4 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar4 * 2" identifier * number_literal)) ))))) ;) (if_statement "if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" if (parenthesized_expression "((uVar2 & 0x100) != 0)" ( (binary_expression "(uVar2 & 0x100) != 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" { (expression_statement "uVar5 = (ulong)(byte)pcVar3[2];" (assignment_expression "uVar5 = (ulong)(byte)pcVar3[2]" identifier = (cast_expression "(ulong)(byte)pcVar3[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)pcVar3[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar3[2]" identifier [ number_literal ])))) ;) (expression_statement "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);" (assignment_expression "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar5 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar5 * 2)" ( (binary_expression "&DAT_003909e0 + uVar5 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar5 * 2" identifier * number_literal)) ))))) ;) (if_statement "if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" if (parenthesized_expression "((uVar9 & 0x100) != 0)" ( (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" ( (binary_expression "uVar9 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" { (expression_statement "pbVar10 = pbVar8;" (assignment_expression "pbVar10 = pbVar8" identifier = identifier) ;) (do_statement "do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);" do (compound_statement "{\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            }" { (expression_statement "cVar7 = (char)uVar4 + -0x30;" (assignment_expression "cVar7 = (char)uVar4 + -0x30" identifier = (binary_expression "(char)uVar4 + -0x30" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                cVar7 = (char)uVar4 + -0x37;\n              }" { (expression_statement "cVar7 = (char)uVar4 + -0x37;" (assignment_expression "cVar7 = (char)uVar4 + -0x37" identifier = (binary_expression "(char)uVar4 + -0x37" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) })) (if_statement "if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }" if (parenthesized_expression "((uVar9 & 4) == 0)" ( (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" ( (binary_expression "uVar9 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }" { (expression_statement "local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;" (assignment_expression "local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" identifier = (binary_expression "((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" (parenthesized_expression "((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U))" ( (binary_expression "(char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) - (parenthesized_expression "(-((uVar9 & 0x80) == 0) & 0x20U)" ( (binary_expression "-((uVar9 & 0x80) == 0) & 0x20U" (unary_expression "-((uVar9 & 0x80) == 0)" - (parenthesized_expression "((uVar9 & 0x80) == 0)" ( (binary_expression "(uVar9 & 0x80) == 0" (parenthesized_expression "(uVar9 & 0x80)" ( (binary_expression "uVar9 & 0x80" identifier & number_literal) )) == number_literal) ))) & number_literal) ))) )) - number_literal)) ;) }) (else_clause "else {\n                local_41 = (char)uVar5 - 0x30;\n              }" else (compound_statement "{\n                local_41 = (char)uVar5 - 0x30;\n              }" { (expression_statement "local_41 = (char)uVar5 - 0x30;" (assignment_expression "local_41 = (char)uVar5 - 0x30" identifier = (binary_expression "(char)uVar5 - 0x30" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) ;) }))) (expression_statement "local_41 = (byte)((int)cVar7 << 4) | local_41;" (assignment_expression "local_41 = (byte)((int)cVar7 << 4) | local_41" identifier = (binary_expression "(byte)((int)cVar7 << 4) | local_41" (call_expression "(byte)((int)cVar7 << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((int)cVar7 << 4)" ( (binary_expression "(int)cVar7 << 4" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) | identifier)) ;) (expression_statement "pbVar8 = pbVar10 + 2;" (assignment_expression "pbVar8 = pbVar10 + 2" identifier = (binary_expression "pbVar10 + 2" identifier + number_literal)) ;) (if_statement "if (pbVar8 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (switch_statement "switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }" switch (parenthesized_expression "(local_41)" ( identifier )) (compound_statement "{\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }" { (case_statement "case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff31);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff31)" identifier (argument_list "(param_1,&DAT_0038ff31)" ( identifier , (pointer_expression "&DAT_0038ff31" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff34);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff34)" identifier (argument_list "(param_1,&DAT_0038ff34)" ( identifier , (pointer_expression "&DAT_0038ff34" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff3d);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff3d)" identifier (argument_list "(param_1,&DAT_0038ff3d)" ( identifier , (pointer_expression "&DAT_0038ff3d" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff3a);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff3a)" identifier (argument_list "(param_1,&DAT_0038ff3a)" ( identifier , (pointer_expression "&DAT_0038ff3a" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038ff37);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff37)" identifier (argument_list "(param_1,&DAT_0038ff37)" ( identifier , (pointer_expression "&DAT_0038ff37" & identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;" default : (if_statement "if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" if (parenthesized_expression "(((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0)" ( (binary_expression "((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0" (parenthesized_expression "((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10)" ( (binary_expression "(&DAT_003909e0)[(ulong)local_41 * 2] & 0x10" (subscript_expression "(&DAT_003909e0)[(ulong)local_41 * 2]" (parenthesized_expression "(&DAT_003909e0)" ( (pointer_expression "&DAT_003909e0" & identifier) )) [ (binary_expression "(ulong)local_41 * 2" (cast_expression "(ulong)local_41" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }" { (expression_statement "FUN_002d6040(param_1,&DAT_0038ff0e);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff0e)" identifier (argument_list "(param_1,&DAT_0038ff0e)" ( identifier , (pointer_expression "&DAT_0038ff0e" & identifier) ))) ;) (expression_statement "FUN_002d63a0(param_1,pbVar10,2);" (call_expression "FUN_002d63a0(param_1,pbVar10,2)" identifier (argument_list "(param_1,pbVar10,2)" ( identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" else (compound_statement "{\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" { (expression_statement "FUN_002d63a0(param_1,&local_41,1);" (call_expression "FUN_002d63a0(param_1,&local_41,1)" identifier (argument_list "(param_1,&local_41,1)" ( identifier , (pointer_expression "&local_41" & identifier) , number_literal ))) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);" case number_literal : (expression_statement "FUN_002d6040(param_1,&DAT_0038529f);" (call_expression "FUN_002d6040(param_1,&DAT_0038529f)" identifier (argument_list "(param_1,&DAT_0038529f)" ( identifier , (pointer_expression "&DAT_0038529f" & identifier) ))) ;)) })) (expression_statement "lVar1 = local_40[0] + -1;" (assignment_expression "lVar1 = local_40[0] + -1" identifier = (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "bVar11 = local_40[0] == 0;" (assignment_expression "bVar11 = local_40[0] == 0" identifier = (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "local_40[0] = lVar1;" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar11) goto LAB_002d6ee0;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_002d6ee0;" goto statement_identifier ;)) (expression_statement "uVar4 = (ulong)*pbVar8;" (assignment_expression "uVar4 = (ulong)*pbVar8" identifier = (binary_expression "(ulong)*pbVar8" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);" (assignment_expression "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar4 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar4 * 2)" ( (binary_expression "&DAT_003909e0 + uVar4 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar4 * 2" identifier * number_literal)) ))))) ;) (if_statement "if ((uVar2 & 0x100) == 0) break;" if (parenthesized_expression "((uVar2 & 0x100) == 0)" ( (binary_expression "(uVar2 & 0x100) == 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = (ulong)pbVar10[3];" (assignment_expression "uVar5 = (ulong)pbVar10[3]" identifier = (cast_expression "(ulong)pbVar10[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);" (assignment_expression "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2)" identifier = (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar5 * 2)" * (cast_expression "(ushort *)(&DAT_003909e0 + uVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003909e0 + uVar5 * 2)" ( (binary_expression "&DAT_003909e0 + uVar5 * 2" (pointer_expression "&DAT_003909e0" & identifier) + (binary_expression "uVar5 * 2" identifier * number_literal)) ))))) ;) (expression_statement "pbVar10 = pbVar8;" (assignment_expression "pbVar10 = pbVar8" identifier = identifier) ;) }) while (parenthesized_expression "((uVar9 & 0x100) != 0)" ( (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" ( (binary_expression "uVar9 & 0x100" identifier & number_literal) )) != number_literal) )) ;) })) })) })) })) (goto_statement "goto switchD_002d6986_caseD_3a;" goto statement_identifier ;)) (case_statement "case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;" case (char_literal "'c'" ' character ') : (expression_statement "pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);" (assignment_expression "pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1)" identifier = (cast_expression "(char *)FUN_002d6720(param_1,param_2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6720(param_1,param_2 + 1)" identifier (argument_list "(param_1,param_2 + 1)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0038536d);" (call_expression "FUN_002d6040(param_1,&DAT_0038536d)" identifier (argument_list "(param_1,&DAT_0038536d)" ( identifier , (pointer_expression "&DAT_0038536d" & identifier) ))) ;) (if_statement "if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }" if (parenthesized_expression "((pcVar3 != (char *)0x0) && (*pcVar3 == 'c'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (*pcVar3 == 'c')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar3 == 'c')" ( (binary_expression "*pcVar3 == 'c'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'c'" ' character ')) ))) )) (compound_statement "{\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }" { (expression_statement "pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);" (assignment_expression "pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1)" identifier = (cast_expression "(byte *)FUN_002d6720(param_1,pcVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6720(param_1,pcVar3 + 1)" identifier (argument_list "(param_1,pcVar3 + 1)" ( identifier , (binary_expression "pcVar3 + 1" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0037a19c);" (call_expression "FUN_002d6040(param_1,&DAT_0037a19c)" identifier (argument_list "(param_1,&DAT_0037a19c)" ( identifier , (pointer_expression "&DAT_0037a19c" & identifier) ))) ;) (return_statement "return pbVar8;" return identifier ;) })) (labeled_statement "switchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar8 = (byte *)0x0;" (assignment_expression "pbVar8 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (break_statement "break;" break ;)) (case_statement "case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;" case (char_literal "'e'" ' character ') : (expression_statement "pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);" (assignment_expression "pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1)" identifier = (cast_expression "(byte *)FUN_002d6720(param_1,param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d6720(param_1,param_2 + 1)" identifier (argument_list "(param_1,param_2 + 1)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'i':\n    param_2 = param_2 + 1;" 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)) ;)) (case_statement "case '0':" case (char_literal "'0'" ' character ') :) (case_statement "case '1':" case (char_literal "'1'" ' character ') :) (case_statement "case '2':" case (char_literal "'2'" ' character ') :) (case_statement "case '3':" case (char_literal "'3'" ' character ') :) (case_statement "case '4':" case (char_literal "'4'" ' character ') :) (case_statement "case '5':" case (char_literal "'5'" ' character ') :) (case_statement "case '6':" case (char_literal "'6'" ' character ') :) (case_statement "case '7':" case (char_literal "'7'" ' character ') :) (case_statement "case '8':" case (char_literal "'8'" ' character ') :) (case_statement "case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;" case (char_literal "'9'" ' character ') : (expression_statement "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);" (assignment_expression "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4)" identifier = (cast_expression "(byte *)FUN_002d63d0(param_1,param_2,(int)param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d63d0(param_1,param_2,(int)param_4)" identifier (argument_list "(param_1,param_2,(int)param_4)" ( identifier , identifier , (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (return_statement "return pbVar8;" return identifier ;)) (case_statement "case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);" case (char_literal "'n'" ' character ') : (expression_statement "pbVar8 = (byte *)(param_2 + 1);" (assignment_expression "pbVar8 = (byte *)(param_2 + 1)" identifier = (cast_expression "(byte *)(param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002d6040(param_1,&DAT_0038ff2c);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff2c)" identifier (argument_list "(param_1,&DAT_0038ff2c)" ( identifier , (pointer_expression "&DAT_0038ff2c" & identifier) ))) ;)) })) (return_statement "return pbVar8;" return identifier ;) (labeled_statement "LAB_002d6a56:\n  local_40[0] = -1;" statement_identifier : (expression_statement "local_40[0] = -1;" (assignment_expression "local_40[0] = -1" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;)) (labeled_statement "LAB_002d6a5f:\n  FUN_002d6040(param_1,"]");" statement_identifier : (expression_statement "FUN_002d6040(param_1,"]");" (call_expression "FUN_002d6040(param_1,"]")" identifier (argument_list "(param_1,"]")" ( identifier , (string_literal ""]"" " string_content ") ))) ;)) (return_statement "return pbVar8;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT == (char_literal ' escape_sequence '))) ))) )) (goto_statement goto statement_identifier ;)) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , 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) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) , IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , 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) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) , (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) , IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) })) }))) (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) ;) (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 ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) , (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) , IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (break_statement break ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) })) (break_statement break ;)) (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 ( (binary_expression IDENT + LIT) , 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 ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression (unary_expression - (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) & LIT) ))) )) - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (break_statement break ;)) (case_statement default : (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) ) IDENT) * LIT) ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) }))) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) ;) })) })) })) })) (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (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 ( IDENT , (binary_expression IDENT + LIT) ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (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 ') :) (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 ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) ;) (return_statement return IDENT ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;)) })) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;)) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)\n\n{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}" (type_identifier "byte") (pointer_declarator "* FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)" (* "*") (function_declarator "FUN_002d6950(undefined8 param_1,char *param_2,long param_3,char param_4)" (identifier "FUN_002d6950") (parameter_list "(undefined8 param_1,char *param_2,long param_3,char param_4)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "char param_4" (primitive_type "char") (identifier "param_4")) () ")")))) (compound_statement "{\n  long lVar1;\n  ushort uVar2;\n  char *pcVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  char cVar7;\n  byte *pbVar8;\n  ushort uVar9;\n  byte *pbVar10;\n  bool bVar11;\n  char local_42;\n  byte local_41;\n  long local_40 [2];\n  \n  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;\n  switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }\n  return pbVar8;\nLAB_002d6a56:\n  local_40[0] = -1;\nLAB_002d6a5f:\n  FUN_002d6040(param_1,"]");\n  return pbVar8;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "ushort uVar9;" (type_identifier "ushort") (identifier "uVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "char local_42;" (primitive_type "char") (identifier "local_42") (; ";")) (declaration "byte local_41;" (type_identifier "byte") (identifier "local_41") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (if_statement "if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))\n  goto switchD_002d6986_caseD_3a;" (if "if") (parenthesized_expression "((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))" (( "(") (binary_expression "(param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0')" (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"))) () ")")) (|| "||") (parenthesized_expression "(local_42 = *param_2, local_42 == '\0')" (( "(") (comma_expression "local_42 = *param_2, local_42 == '\0'" (assignment_expression "local_42 = *param_2" (identifier "local_42") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (binary_expression "local_42 == '\0'" (identifier "local_42") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (goto_statement "goto switchD_002d6986_caseD_3a;" (goto "goto") (statement_identifier "switchD_002d6986_caseD_3a") (; ";"))) (switch_statement "switch(local_42) {\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }" (switch "switch") (parenthesized_expression "(local_42)" (( "(") (identifier "local_42") () ")")) (compound_statement "{\n  default:\n    goto switchD_002d6986_caseD_3a;\n  case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;\n  case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;\n  case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;\n  case 'a':\n  case 'd':\n  case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;\n  case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;\n  case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;\n  case 'i':\n    param_2 = param_2 + 1;\n  case '0':\n  case '1':\n  case '2':\n  case '3':\n  case '4':\n  case '5':\n  case '6':\n  case '7':\n  case '8':\n  case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;\n  case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);\n  }" ({ "{") (case_statement "default:\n    goto switchD_002d6986_caseD_3a;" (default "default") (: ":") (goto_statement "goto switchD_002d6986_caseD_3a;" (goto "goto") (statement_identifier "switchD_002d6986_caseD_3a") (; ";"))) (case_statement "case 'A':\n    if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    goto LAB_002d6a5f;" (case "case") (char_literal "'A'" (' "'") (character "A") (' "'")) (: ":") (if_statement "if (param_4 == 'H') {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }\n    else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" (if "if") (parenthesized_expression "(param_4 == 'H')" (( "(") (binary_expression "param_4 == 'H'" (identifier "param_4") (== "==") (char_literal "'H'" (' "'") (character "H") (' "'"))) () ")")) (compound_statement "{\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" ({ "{") (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d5f30(param_2 + 1,local_40)" (identifier "FUN_002d5f30") (argument_list "(param_2 + 1,local_40)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }" (if "if") (parenthesized_expression "(pbVar8 == (byte *)0x0)" (( "(") (binary_expression "pbVar8 == (byte *)0x0" (identifier "pbVar8") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return (byte *)0x0;\n      }" ({ "{") (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "FUN_002d6040(param_1,&DAT_003763cb);" (call_expression "FUN_002d6040(param_1,&DAT_003763cb)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_003763cb)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_003763cb" (& "&") (identifier "DAT_003763cb")) () ")"))) (; ";")) (while_statement "while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" (while "while") (parenthesized_expression "(bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11)" (( "(") (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" (identifier "bVar11") (= "=") (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0"))) (, ",") (comma_expression "local_40[0] = local_40[0] + -1, bVar11" (assignment_expression "local_40[0] = local_40[0] + -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-1"))) (, ",") (identifier "bVar11"))) () ")")) (compound_statement "{\n        uVar6 = FUN_002d6950(param_1,pbVar8,0,0);\n        FUN_002d6040(param_1,&DAT_0037aef2);\n        pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" ({ "{") (expression_statement "uVar6 = FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "uVar6 = FUN_002d6950(param_1,pbVar8,0,0)" (identifier "uVar6") (= "=") (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" (identifier "FUN_002d6950") (argument_list "(param_1,pbVar8,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "pbVar8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_002d6040(param_1,&DAT_0037aef2);" (call_expression "FUN_002d6040(param_1,&DAT_0037aef2)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0037aef2)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0037aef2" (& "&") (identifier "DAT_0037aef2")) () ")"))) (; ";")) (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,uVar6,0)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d6950(param_1,uVar6,0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d6950(param_1,uVar6,0)" (identifier "FUN_002d6950") (argument_list "(param_1,uVar6,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar6") (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (local_40[0] == 0) goto LAB_002d6a56;" (if "if") (parenthesized_expression "(local_40[0] == 0)" (( "(") (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002d6a56;" (goto "goto") (statement_identifier "LAB_002d6a56") (; ";"))) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" (identifier "FUN_002d6040") (argument_list "(param_1,", ")" (( "(") (identifier "param_1") (, ",") (string_literal "", "" (" """) (string_content ", ") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" (else "else") (compound_statement "{\n      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n      if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }\n      FUN_002d6040(param_1,&DAT_003763cb);\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }\n    }" ({ "{") (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d5f30(param_2 + 1,local_40)" (identifier "FUN_002d5f30") (argument_list "(param_2 + 1,local_40)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if (pbVar8 == (byte *)0x0) {\n        return (byte *)0x0;\n      }" (if "if") (parenthesized_expression "(pbVar8 == (byte *)0x0)" (( "(") (binary_expression "pbVar8 == (byte *)0x0" (identifier "pbVar8") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return (byte *)0x0;\n      }" ({ "{") (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "FUN_002d6040(param_1,&DAT_003763cb);" (call_expression "FUN_002d6040(param_1,&DAT_003763cb)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_003763cb)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_003763cb" (& "&") (identifier "DAT_003763cb")) () ")"))) (; ";")) (while_statement "while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" (while "while") (parenthesized_expression "(lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11)" (( "(") (comma_expression "lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "lVar1 = local_40[0] + -1" (identifier "lVar1") (= "=") (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-1"))) (, ",") (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" (identifier "bVar11") (= "=") (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0"))) (, ",") (comma_expression "local_40[0] = lVar1, bVar11" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "lVar1")) (, ",") (identifier "bVar11")))) () ")")) (compound_statement "{\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) goto LAB_002d6a56;\n        FUN_002d6040(param_1,", ");\n      }" ({ "{") (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d6950(param_1,pbVar8,0,0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" (identifier "FUN_002d6950") (argument_list "(param_1,pbVar8,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "pbVar8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (local_40[0] == 0) goto LAB_002d6a56;" (if "if") (parenthesized_expression "(local_40[0] == 0)" (( "(") (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002d6a56;" (goto "goto") (statement_identifier "LAB_002d6a56") (; ";"))) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" (identifier "FUN_002d6040") (argument_list "(param_1,", ")" (( "(") (identifier "param_1") (, ",") (string_literal "", "" (" """) (string_content ", ") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")))) (goto_statement "goto LAB_002d6a5f;" (goto "goto") (statement_identifier "LAB_002d6a5f") (; ";"))) (case_statement "case 'N':\n    FUN_002d6040(param_1,&DAT_00379a38);\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);\n    break;" (case "case") (char_literal "'N'" (' "'") (character "N") (' "'")) (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_00379a38);" (call_expression "FUN_002d6040(param_1,&DAT_00379a38)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_00379a38)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_00379a38" (& "&") (identifier "DAT_00379a38")) () ")"))) (; ";")) (expression_statement "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);" (assignment_expression "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d63d0(param_1,param_2 + 1,(int)param_4)" (identifier "FUN_002d63d0") (argument_list "(param_1,param_2 + 1,(int)param_4)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'S':\n    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }\n    break;" (case "case") (char_literal "'S'" (' "'") (character "S") (' "'")) (: ":") (expression_statement "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d5f30(param_2 + 1,local_40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d5f30(param_2 + 1,local_40)" (identifier "FUN_002d5f30") (argument_list "(param_2 + 1,local_40)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if (pbVar8 != (byte *)0x0) {\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }" (if "if") (parenthesized_expression "(pbVar8 != (byte *)0x0)" (( "(") (binary_expression "pbVar8 != (byte *)0x0" (identifier "pbVar8") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }\n      FUN_002d6040(param_1,"(");\n      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }\n      FUN_002d6040(param_1,&DAT_0038e477);\n    }" ({ "{") (if_statement "if (param_3 != 0) {\n        FUN_002d6040(param_1,param_3);\n      }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_002d6040(param_1,param_3);\n      }" ({ "{") (expression_statement "FUN_002d6040(param_1,param_3);" (call_expression "FUN_002d6040(param_1,param_3)" (identifier "FUN_002d6040") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002d6040(param_1,"(");" (call_expression "FUN_002d6040(param_1,"(")" (identifier "FUN_002d6040") (argument_list "(param_1,"(")" (( "(") (identifier "param_1") (, ",") (string_literal ""("" (" """) (string_content "(") (" """)) () ")"))) (; ";")) (while_statement "while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }" (while "while") (parenthesized_expression "(lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11)" (( "(") (comma_expression "lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "lVar1 = local_40[0] + -1" (identifier "lVar1") (= "=") (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-1"))) (, ",") (comma_expression "bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11" (assignment_expression "bVar11 = local_40[0] != 0" (identifier "bVar11") (= "=") (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0"))) (, ",") (comma_expression "local_40[0] = lVar1, bVar11" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "lVar1")) (, ",") (identifier "bVar11")))) () ")")) (compound_statement "{\n        pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);\n        if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }\n        FUN_002d6040(param_1,", ");\n      }" ({ "{") (expression_statement "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0);" (assignment_expression "pbVar8 = (byte *)FUN_002d6950(param_1,pbVar8,0,0)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d6950(param_1,pbVar8,0,0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d6950(param_1,pbVar8,0,0)" (identifier "FUN_002d6950") (argument_list "(param_1,pbVar8,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "pbVar8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (local_40[0] == 0) {\n          local_40[0] = -1;\n          break;\n        }" (if "if") (parenthesized_expression "(local_40[0] == 0)" (( "(") (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_40[0] = -1;\n          break;\n        }" ({ "{") (expression_statement "local_40[0] = -1;" (assignment_expression "local_40[0] = -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "-1")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "FUN_002d6040(param_1,", ");" (call_expression "FUN_002d6040(param_1,", ")" (identifier "FUN_002d6040") (argument_list "(param_1,", ")" (( "(") (identifier "param_1") (, ",") (string_literal "", "" (" """) (string_content ", ") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002d6040(param_1,&DAT_0038e477);" (call_expression "FUN_002d6040(param_1,&DAT_0038e477)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038e477)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038e477" (& "&") (identifier "DAT_0038e477")) () ")"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'a':" (case "case") (char_literal "'a'" (' "'") (character "a") (' "'")) (: ":")) (case_statement "case 'd':" (case "case") (char_literal "'d'" (' "'") (character "d") (' "'")) (: ":")) (case_statement "case 'w':\n    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);\n    if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }\n    if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }\n    goto switchD_002d6986_caseD_3a;" (case "case") (char_literal "'w'" (' "'") (character "w") (' "'")) (: ":") (expression_statement "pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);" (assignment_expression "pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_002d5f30(param_2 + 1,local_40)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d5f30(param_2 + 1,local_40)" (identifier "FUN_002d5f30") (argument_list "(param_2 + 1,local_40)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n      return (byte *)0x0;\n    }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return (byte *)0x0;\n    }" ({ "{") (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (*pcVar3 == '_') {\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(*pcVar3 == '_')" (( "(") (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n      pbVar8 = (byte *)(pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0038e1b1);\n      lVar1 = local_40[0] + -1;\n      bVar11 = local_40[0] == 0;\n      local_40[0] = lVar1;\n      if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }\n      if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "pbVar8 = (byte *)(pcVar3 + 1);" (assignment_expression "pbVar8 = (byte *)(pcVar3 + 1)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(pcVar3 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar3 + 1)" (( "(") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_002d6040(param_1,&DAT_0038e1b1);" (call_expression "FUN_002d6040(param_1,&DAT_0038e1b1)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038e1b1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038e1b1" (& "&") (identifier "DAT_0038e1b1")) () ")"))) (; ";")) (expression_statement "lVar1 = local_40[0] + -1;" (assignment_expression "lVar1 = local_40[0] + -1" (identifier "lVar1") (= "=") (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = local_40[0] == 0;" (assignment_expression "bVar11 = local_40[0] == 0" (identifier "bVar11") (= "=") (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "local_40[0] = lVar1;" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "lVar1")) (; ";")) (if_statement "if (bVar11) {\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (compound_statement "{\nLAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);\n        if (local_42 == 'a') {\n          return pbVar8;\n        }\n        FUN_002d63a0(param_1,&local_42,1);\n        return pbVar8;\n      }" ({ "{") (labeled_statement "LAB_002d6ee0:\n        FUN_002d6040(param_1,&DAT_0038e1b1);" (statement_identifier "LAB_002d6ee0") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038e1b1);" (call_expression "FUN_002d6040(param_1,&DAT_0038e1b1)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038e1b1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038e1b1" (& "&") (identifier "DAT_0038e1b1")) () ")"))) (; ";"))) (if_statement "if (local_42 == 'a') {\n          return pbVar8;\n        }" (if "if") (parenthesized_expression "(local_42 == 'a')" (( "(") (binary_expression "local_42 == 'a'" (identifier "local_42") (== "==") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")")) (compound_statement "{\n          return pbVar8;\n        }" ({ "{") (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";")) (} "}"))) (expression_statement "FUN_002d63a0(param_1,&local_42,1);" (call_expression "FUN_002d63a0(param_1,&local_42,1)" (identifier "FUN_002d63a0") (argument_list "(param_1,&local_42,1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_42" (& "&") (identifier "local_42")) (, ",") (number_literal "1") () ")"))) (; ";")) (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";")) (} "}"))) (if_statement "if (pbVar8 != (byte *)0x0) {\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(pbVar8 != (byte *)0x0)" (( "(") (binary_expression "pbVar8 != (byte *)0x0" (identifier "pbVar8") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar4 = (ulong)(byte)pcVar3[1];\n        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n        if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }\n      }" ({ "{") (expression_statement "uVar4 = (ulong)(byte)pcVar3[1];" (assignment_expression "uVar4 = (ulong)(byte)pcVar3[1]" (identifier "uVar4") (= "=") (cast_expression "(ulong)(byte)pcVar3[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)pcVar3[1]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);" (assignment_expression "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar4 * 2)" (* "*") (cast_expression "(ushort *)(&DAT_003909e0 + uVar4 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_003909e0 + uVar4 * 2)" (( "(") (binary_expression "&DAT_003909e0 + uVar4 * 2" (pointer_expression "&DAT_003909e0" (& "&") (identifier "DAT_003909e0")) (+ "+") (binary_expression "uVar4 * 2" (identifier "uVar4") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if ((uVar2 & 0x100) != 0) {\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" (if "if") (parenthesized_expression "((uVar2 & 0x100) != 0)" (( "(") (binary_expression "(uVar2 & 0x100) != 0" (parenthesized_expression "(uVar2 & 0x100)" (( "(") (binary_expression "uVar2 & 0x100" (identifier "uVar2") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = (ulong)(byte)pcVar3[2];\n          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n          if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }\n        }" ({ "{") (expression_statement "uVar5 = (ulong)(byte)pcVar3[2];" (assignment_expression "uVar5 = (ulong)(byte)pcVar3[2]" (identifier "uVar5") (= "=") (cast_expression "(ulong)(byte)pcVar3[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)pcVar3[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "pcVar3[2]" (identifier "pcVar3") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (expression_statement "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);" (assignment_expression "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2)" (identifier "uVar9") (= "=") (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar5 * 2)" (* "*") (cast_expression "(ushort *)(&DAT_003909e0 + uVar5 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_003909e0 + uVar5 * 2)" (( "(") (binary_expression "&DAT_003909e0 + uVar5 * 2" (pointer_expression "&DAT_003909e0" (& "&") (identifier "DAT_003909e0")) (+ "+") (binary_expression "uVar5 * 2" (identifier "uVar5") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if ((uVar9 & 0x100) != 0) {\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" (if "if") (parenthesized_expression "((uVar9 & 0x100) != 0)" (( "(") (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" (( "(") (binary_expression "uVar9 & 0x100" (identifier "uVar9") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pbVar10 = pbVar8;\n            do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);\n          }" ({ "{") (expression_statement "pbVar10 = pbVar8;" (assignment_expression "pbVar10 = pbVar8" (identifier "pbVar10") (= "=") (identifier "pbVar8")) (; ";")) (do_statement "do {\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            } while ((uVar9 & 0x100) != 0);" (do "do") (compound_statement "{\n              cVar7 = (char)uVar4 + -0x30;\n              if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }\n              if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }\n              local_41 = (byte)((int)cVar7 << 4) | local_41;\n              pbVar8 = pbVar10 + 2;\n              if (pbVar8 == (byte *)0x0) break;\n              switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }\n              lVar1 = local_40[0] + -1;\n              bVar11 = local_40[0] == 0;\n              local_40[0] = lVar1;\n              if (bVar11) goto LAB_002d6ee0;\n              uVar4 = (ulong)*pbVar8;\n              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);\n              if ((uVar2 & 0x100) == 0) break;\n              uVar5 = (ulong)pbVar10[3];\n              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);\n              pbVar10 = pbVar8;\n            }" ({ "{") (expression_statement "cVar7 = (char)uVar4 + -0x30;" (assignment_expression "cVar7 = (char)uVar4 + -0x30" (identifier "cVar7") (= "=") (binary_expression "(char)uVar4 + -0x30" (cast_expression "(char)uVar4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar4")) (+ "+") (number_literal "-0x30"))) (; ";")) (if_statement "if ((uVar2 & 4) == 0) {\n                cVar7 = (char)uVar4 + -0x37;\n              }" (if "if") (parenthesized_expression "((uVar2 & 4) == 0)" (( "(") (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" (( "(") (binary_expression "uVar2 & 4" (identifier "uVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                cVar7 = (char)uVar4 + -0x37;\n              }" ({ "{") (expression_statement "cVar7 = (char)uVar4 + -0x37;" (assignment_expression "cVar7 = (char)uVar4 + -0x37" (identifier "cVar7") (= "=") (binary_expression "(char)uVar4 + -0x37" (cast_expression "(char)uVar4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar4")) (+ "+") (number_literal "-0x37"))) (; ";")) (} "}"))) (if_statement "if ((uVar9 & 4) == 0) {\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }\n              else {\n                local_41 = (char)uVar5 - 0x30;\n              }" (if "if") (parenthesized_expression "((uVar9 & 4) == 0)" (( "(") (binary_expression "(uVar9 & 4) == 0" (parenthesized_expression "(uVar9 & 4)" (( "(") (binary_expression "uVar9 & 4" (identifier "uVar9") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;\n              }" ({ "{") (expression_statement "local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;" (assignment_expression "local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" (identifier "local_41") (= "=") (binary_expression "((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37" (parenthesized_expression "((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U))" (( "(") (binary_expression "(char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)" (cast_expression "(char)uVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar5")) (- "-") (parenthesized_expression "(-((uVar9 & 0x80) == 0) & 0x20U)" (( "(") (binary_expression "-((uVar9 & 0x80) == 0) & 0x20U" (unary_expression "-((uVar9 & 0x80) == 0)" (- "-") (parenthesized_expression "((uVar9 & 0x80) == 0)" (( "(") (binary_expression "(uVar9 & 0x80) == 0" (parenthesized_expression "(uVar9 & 0x80)" (( "(") (binary_expression "uVar9 & 0x80" (identifier "uVar9") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")"))) (& "&") (number_literal "0x20U")) () ")"))) () ")")) (- "-") (number_literal "0x37"))) (; ";")) (} "}")) (else_clause "else {\n                local_41 = (char)uVar5 - 0x30;\n              }" (else "else") (compound_statement "{\n                local_41 = (char)uVar5 - 0x30;\n              }" ({ "{") (expression_statement "local_41 = (char)uVar5 - 0x30;" (assignment_expression "local_41 = (char)uVar5 - 0x30" (identifier "local_41") (= "=") (binary_expression "(char)uVar5 - 0x30" (cast_expression "(char)uVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar5")) (- "-") (number_literal "0x30"))) (; ";")) (} "}")))) (expression_statement "local_41 = (byte)((int)cVar7 << 4) | local_41;" (assignment_expression "local_41 = (byte)((int)cVar7 << 4) | local_41" (identifier "local_41") (= "=") (binary_expression "(byte)((int)cVar7 << 4) | local_41" (call_expression "(byte)((int)cVar7 << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((int)cVar7 << 4)" (( "(") (binary_expression "(int)cVar7 << 4" (cast_expression "(int)cVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar7")) (<< "<<") (number_literal "4")) () ")"))) (| "|") (identifier "local_41"))) (; ";")) (expression_statement "pbVar8 = pbVar10 + 2;" (assignment_expression "pbVar8 = pbVar10 + 2" (identifier "pbVar8") (= "=") (binary_expression "pbVar10 + 2" (identifier "pbVar10") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (pbVar8 == (byte *)0x0) break;" (if "if") (parenthesized_expression "(pbVar8 == (byte *)0x0)" (( "(") (binary_expression "pbVar8 == (byte *)0x0" (identifier "pbVar8") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (switch_statement "switch(local_41) {\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }" (switch "switch") (parenthesized_expression "(local_41)" (( "(") (identifier "local_41") () ")")) (compound_statement "{\n              case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;\n              case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;\n              case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;\n              case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;\n              case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;\n              default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;\n              case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);\n              }" ({ "{") (case_statement "case 9:\n                FUN_002d6040(param_1,&DAT_0038ff31);\n                break;" (case "case") (number_literal "9") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038ff31);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff31)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff31)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff31" (& "&") (identifier "DAT_0038ff31")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 10:\n                FUN_002d6040(param_1,&DAT_0038ff34);\n                break;" (case "case") (number_literal "10") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038ff34);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff34)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff34)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff34" (& "&") (identifier "DAT_0038ff34")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xb:\n                FUN_002d6040(param_1,&DAT_0038ff3d);\n                break;" (case "case") (number_literal "0xb") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038ff3d);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff3d)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff3d)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff3d" (& "&") (identifier "DAT_0038ff3d")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xc:\n                FUN_002d6040(param_1,&DAT_0038ff3a);\n                break;" (case "case") (number_literal "0xc") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038ff3a);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff3a)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff3a)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff3a" (& "&") (identifier "DAT_0038ff3a")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xd:\n                FUN_002d6040(param_1,&DAT_0038ff37);\n                break;" (case "case") (number_literal "0xd") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038ff37);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff37)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff37)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff37" (& "&") (identifier "DAT_0038ff37")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }\n                break;" (default "default") (: ":") (if_statement "if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }\n                else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" (if "if") (parenthesized_expression "(((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0)" (( "(") (binary_expression "((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0" (parenthesized_expression "((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10)" (( "(") (binary_expression "(&DAT_003909e0)[(ulong)local_41 * 2] & 0x10" (subscript_expression "(&DAT_003909e0)[(ulong)local_41 * 2]" (parenthesized_expression "(&DAT_003909e0)" (( "(") (pointer_expression "&DAT_003909e0" (& "&") (identifier "DAT_003909e0")) () ")")) ([ "[") (binary_expression "(ulong)local_41 * 2" (cast_expression "(ulong)local_41" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_41")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_002d6040(param_1,&DAT_0038ff0e);\n                  FUN_002d63a0(param_1,pbVar10,2);\n                }" ({ "{") (expression_statement "FUN_002d6040(param_1,&DAT_0038ff0e);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff0e)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff0e)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff0e" (& "&") (identifier "DAT_0038ff0e")) () ")"))) (; ";")) (expression_statement "FUN_002d63a0(param_1,pbVar10,2);" (call_expression "FUN_002d63a0(param_1,pbVar10,2)" (identifier "FUN_002d63a0") (argument_list "(param_1,pbVar10,2)" (( "(") (identifier "param_1") (, ",") (identifier "pbVar10") (, ",") (number_literal "2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" (else "else") (compound_statement "{\n                  FUN_002d63a0(param_1,&local_41,1);\n                }" ({ "{") (expression_statement "FUN_002d63a0(param_1,&local_41,1);" (call_expression "FUN_002d63a0(param_1,&local_41,1)" (identifier "FUN_002d63a0") (argument_list "(param_1,&local_41,1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_41" (& "&") (identifier "local_41")) (, ",") (number_literal "1") () ")"))) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x20:\n                FUN_002d6040(param_1,&DAT_0038529f);" (case "case") (number_literal "0x20") (: ":") (expression_statement "FUN_002d6040(param_1,&DAT_0038529f);" (call_expression "FUN_002d6040(param_1,&DAT_0038529f)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038529f)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038529f" (& "&") (identifier "DAT_0038529f")) () ")"))) (; ";"))) (} "}"))) (expression_statement "lVar1 = local_40[0] + -1;" (assignment_expression "lVar1 = local_40[0] + -1" (identifier "lVar1") (= "=") (binary_expression "local_40[0] + -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = local_40[0] == 0;" (assignment_expression "bVar11 = local_40[0] == 0" (identifier "bVar11") (= "=") (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "local_40[0] = lVar1;" (assignment_expression "local_40[0] = lVar1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "lVar1")) (; ";")) (if_statement "if (bVar11) goto LAB_002d6ee0;" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (goto_statement "goto LAB_002d6ee0;" (goto "goto") (statement_identifier "LAB_002d6ee0") (; ";"))) (expression_statement "uVar4 = (ulong)*pbVar8;" (assignment_expression "uVar4 = (ulong)*pbVar8" (identifier "uVar4") (= "=") (binary_expression "(ulong)*pbVar8" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "pbVar8"))) (; ";")) (expression_statement "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);" (assignment_expression "uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar4 * 2)" (* "*") (cast_expression "(ushort *)(&DAT_003909e0 + uVar4 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_003909e0 + uVar4 * 2)" (( "(") (binary_expression "&DAT_003909e0 + uVar4 * 2" (pointer_expression "&DAT_003909e0" (& "&") (identifier "DAT_003909e0")) (+ "+") (binary_expression "uVar4 * 2" (identifier "uVar4") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if ((uVar2 & 0x100) == 0) break;" (if "if") (parenthesized_expression "((uVar2 & 0x100) == 0)" (( "(") (binary_expression "(uVar2 & 0x100) == 0" (parenthesized_expression "(uVar2 & 0x100)" (( "(") (binary_expression "uVar2 & 0x100" (identifier "uVar2") (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar5 = (ulong)pbVar10[3];" (assignment_expression "uVar5 = (ulong)pbVar10[3]" (identifier "uVar5") (= "=") (cast_expression "(ulong)pbVar10[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "pbVar10[3]" (identifier "pbVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);" (assignment_expression "uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2)" (identifier "uVar9") (= "=") (pointer_expression "*(ushort *)(&DAT_003909e0 + uVar5 * 2)" (* "*") (cast_expression "(ushort *)(&DAT_003909e0 + uVar5 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_003909e0 + uVar5 * 2)" (( "(") (binary_expression "&DAT_003909e0 + uVar5 * 2" (pointer_expression "&DAT_003909e0" (& "&") (identifier "DAT_003909e0")) (+ "+") (binary_expression "uVar5 * 2" (identifier "uVar5") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "pbVar10 = pbVar8;" (assignment_expression "pbVar10 = pbVar8" (identifier "pbVar10") (= "=") (identifier "pbVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar9 & 0x100) != 0)" (( "(") (binary_expression "(uVar9 & 0x100) != 0" (parenthesized_expression "(uVar9 & 0x100)" (( "(") (binary_expression "uVar9 & 0x100" (identifier "uVar9") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto switchD_002d6986_caseD_3a;" (goto "goto") (statement_identifier "switchD_002d6986_caseD_3a") (; ";"))) (case_statement "case 'c':\n    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038536d);\n    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }\nswitchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;\n    break;" (case "case") (char_literal "'c'" (' "'") (character "c") (' "'")) (: ":") (expression_statement "pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);" (assignment_expression "pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_002d6720(param_1,param_2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d6720(param_1,param_2 + 1)" (identifier "FUN_002d6720") (argument_list "(param_1,param_2 + 1)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "FUN_002d6040(param_1,&DAT_0038536d);" (call_expression "FUN_002d6040(param_1,&DAT_0038536d)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038536d)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038536d" (& "&") (identifier "DAT_0038536d")) () ")"))) (; ";")) (if_statement "if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }" (if "if") (parenthesized_expression "((pcVar3 != (char *)0x0) && (*pcVar3 == 'c'))" (( "(") (binary_expression "(pcVar3 != (char *)0x0) && (*pcVar3 == 'c')" (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar3 == 'c')" (( "(") (binary_expression "*pcVar3 == 'c'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'c'" (' "'") (character "c") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);\n      FUN_002d6040(param_1,&DAT_0037a19c);\n      return pbVar8;\n    }" ({ "{") (expression_statement "pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);" (assignment_expression "pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d6720(param_1,pcVar3 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d6720(param_1,pcVar3 + 1)" (identifier "FUN_002d6720") (argument_list "(param_1,pcVar3 + 1)" (( "(") (identifier "param_1") (, ",") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "FUN_002d6040(param_1,&DAT_0037a19c);" (call_expression "FUN_002d6040(param_1,&DAT_0037a19c)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0037a19c)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0037a19c" (& "&") (identifier "DAT_0037a19c")) () ")"))) (; ";")) (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";")) (} "}"))) (labeled_statement "switchD_002d6986_caseD_3a:\n    pbVar8 = (byte *)0x0;" (statement_identifier "switchD_002d6986_caseD_3a") (: ":") (expression_statement "pbVar8 = (byte *)0x0;" (assignment_expression "pbVar8 = (byte *)0x0" (identifier "pbVar8") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'e':\n    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);\n    break;" (case "case") (char_literal "'e'" (' "'") (character "e") (' "'")) (: ":") (expression_statement "pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);" (assignment_expression "pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d6720(param_1,param_2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d6720(param_1,param_2 + 1)" (identifier "FUN_002d6720") (argument_list "(param_1,param_2 + 1)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'i':\n    param_2 = param_2 + 1;" (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"))) (; ";"))) (case_statement "case '0':" (case "case") (char_literal "'0'" (' "'") (character "0") (' "'")) (: ":")) (case_statement "case '1':" (case "case") (char_literal "'1'" (' "'") (character "1") (' "'")) (: ":")) (case_statement "case '2':" (case "case") (char_literal "'2'" (' "'") (character "2") (' "'")) (: ":")) (case_statement "case '3':" (case "case") (char_literal "'3'" (' "'") (character "3") (' "'")) (: ":")) (case_statement "case '4':" (case "case") (char_literal "'4'" (' "'") (character "4") (' "'")) (: ":")) (case_statement "case '5':" (case "case") (char_literal "'5'" (' "'") (character "5") (' "'")) (: ":")) (case_statement "case '6':" (case "case") (char_literal "'6'" (' "'") (character "6") (' "'")) (: ":")) (case_statement "case '7':" (case "case") (char_literal "'7'" (' "'") (character "7") (' "'")) (: ":")) (case_statement "case '8':" (case "case") (char_literal "'8'" (' "'") (character "8") (' "'")) (: ":")) (case_statement "case '9':\n    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);\n    return pbVar8;" (case "case") (char_literal "'9'" (' "'") (character "9") (' "'")) (: ":") (expression_statement "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);" (assignment_expression "pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)FUN_002d63d0(param_1,param_2,(int)param_4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d63d0(param_1,param_2,(int)param_4)" (identifier "FUN_002d63d0") (argument_list "(param_1,param_2,(int)param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) () ")"))))) (; ";")) (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";"))) (case_statement "case 'n':\n    pbVar8 = (byte *)(param_2 + 1);\n    FUN_002d6040(param_1,&DAT_0038ff2c);" (case "case") (char_literal "'n'" (' "'") (character "n") (' "'")) (: ":") (expression_statement "pbVar8 = (byte *)(param_2 + 1);" (assignment_expression "pbVar8 = (byte *)(param_2 + 1)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(param_2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_002d6040(param_1,&DAT_0038ff2c);" (call_expression "FUN_002d6040(param_1,&DAT_0038ff2c)" (identifier "FUN_002d6040") (argument_list "(param_1,&DAT_0038ff2c)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0038ff2c" (& "&") (identifier "DAT_0038ff2c")) () ")"))) (; ";"))) (} "}"))) (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";")) (labeled_statement "LAB_002d6a56:\n  local_40[0] = -1;" (statement_identifier "LAB_002d6a56") (: ":") (expression_statement "local_40[0] = -1;" (assignment_expression "local_40[0] = -1" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "-1")) (; ";"))) (labeled_statement "LAB_002d6a5f:\n  FUN_002d6040(param_1,"]");" (statement_identifier "LAB_002d6a5f") (: ":") (expression_statement "FUN_002d6040(param_1,"]");" (call_expression "FUN_002d6040(param_1,"]")" (identifier "FUN_002d6040") (argument_list "(param_1,"]")" (( "(") (identifier "param_1") (, ",") (string_literal ""]"" (" """) (string_content "]") (" """)) () ")"))) (; ";"))) (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";")) (} "}")))

char * function_1(type_1 *decl,char *var_1,char *var_9,char var_3)

{
  long lVar1;
  type_2 var_12;
  type_3 var_14;
  char *var_5;
  type_4 uVar5;
  type_4 uVar6;
  char cVar7;
  type_3 *var_11;
  type_2 var_13;
  type_3 *var_15;
  bool bVar10;
  char var_2;
  char val;
  long var_7;
  
  if ((var_1 == (char *)0x0) || (var_2 = *var_1, var_2 == '\0'))
  goto switchD_002d6986_caseD_3a;
  switch(var_2) {
  default:
    goto switchD_002d6986_caseD_3a;
  case 'A':
    if (var_3 == 'H') {
      var_5 = var_4(var_1 + 1,&var_7);
      if (var_5 == (char *)0x0) {
        return (char *)0x0;
      }
      var_6(decl,"[");
      while (bVar10 = var_7 != 0, var_7 = var_7 + -1, bVar10) {
        var_5 = function_1(decl,var_5,(char *)0x0,'\0');
        var_6(decl,":");
        var_5 = function_1(decl,var_5,(char *)0x0,'\0');
        if (var_7 == 0) goto LAB_002d6a56;
        var_6(decl,", ");
      }
    }
    else {
      var_5 = var_4(var_1 + 1,&var_7);
      if (var_5 == (char *)0x0) {
        return (char *)0x0;
      }
      var_6(decl,"[");
      while (lVar1 = var_7 + -1, bVar10 = var_7 != 0, var_7 = lVar1, bVar10) {
        var_5 = function_1(decl,var_5,(char *)0x0,'\0');
        if (var_7 == 0) goto LAB_002d6a56;
        var_6(decl,", ");
      }
    }
    goto LAB_002d6a5f;
  case 'N':
    var_6(decl,"-");
    var_5 = var_8(decl,var_1 + 1,var_3);
    break;
  case 'S':
    var_5 = var_4(var_1 + 1,&var_7);
    if (var_5 != (char *)0x0) {
      if (var_9 != (char *)0x0) {
        var_6(decl,var_9);
      }
      var_6(decl,"(");
      while (lVar1 = var_7 + -1, bVar10 = var_7 != 0, var_7 = lVar1, bVar10) {
        var_5 = function_1(decl,var_5,(char *)0x0,'\0');
        if (var_7 == 0) {
          var_7 = -1;
          break;
        }
        var_6(decl,", ");
      }
      var_6(decl,")");
    }
    break;
  case 'a':
  case 'd':
  case 'w':
    var_5 = var_4(var_1 + 1,&var_7);
    if (var_5 == (char *)0x0) {
      return (char *)0x0;
    }
    if (*var_5 == '_') {
      var_11 = (type_3 *)(var_5 + 1);
      var_6(decl,"\"");
      lVar1 = var_7 + -1;
      bVar10 = var_7 == 0;
      var_7 = lVar1;
      if (bVar10) {
LAB_002d6ee0:
        var_6(decl,"\"");
        if (var_2 == 'a') {
          return (char *)var_11;
        }
        var_10(decl,&var_2,1);
        return (char *)var_11;
      }
      if (var_11 != (type_3 *)0x0) {
        uVar5 = (type_4)(type_3)var_5[1];
        var_12 = _sch_istable[uVar5];
        if ((var_12 & 0x100) != 0) {
          uVar6 = (type_4)(type_3)var_5[2];
          var_13 = _sch_istable[uVar6];
          if ((var_13 & 0x100) != 0) {
            var_15 = var_11;
            do {
              cVar7 = (char)uVar5 + -0x30;
              if ((var_12 & 4) == 0) {
                cVar7 = (char)uVar5 + -0x37;
              }
              if ((var_13 & 4) == 0) {
                var_14 = ((char)uVar6 - (-((var_13 & 0x80) == 0) & 0x20U)) - 0x37;
              }
              else {
                var_14 = (char)uVar6 - 0x30;
              }
              val = (type_3)((int)cVar7 << 4) | var_14;
              var_11 = var_15 + 2;
              if (var_11 == (type_3 *)0x0) break;
              switch(val) {
              case '\t':
                var_6(decl,"\\t");
                break;
              case '\n':
                var_6(decl,"\\n");
                break;
              case '\v':
                var_6(decl,"\\v");
                break;
              case '\f':
                var_6(decl,"\\f");
                break;
              case '\r':
                var_6(decl,"\\r");
                break;
              default:
                if ((_sch_istable[(type_3)val] & 0x10) == 0) {
                  var_6(decl,"\\x");
                  var_10(decl,(char *)var_15,2);
                }
                else {
                  var_10(decl,&val,1);
                }
                break;
              case ' ':
                var_6(decl," ");
              }
              lVar1 = var_7 + -1;
              bVar10 = var_7 == 0;
              var_7 = lVar1;
              if (bVar10) goto LAB_002d6ee0;
              uVar5 = (type_4)*var_11;
              var_12 = _sch_istable[uVar5];
              if ((var_12 & 0x100) == 0) break;
              uVar6 = (type_4)var_15[3];
              var_13 = _sch_istable[uVar6];
              var_15 = var_11;
            } while ((var_13 & 0x100) != 0);
          }
        }
      }
    }
    goto switchD_002d6986_caseD_3a;
  case 'c':
    var_5 = var_16(decl,var_1 + 1);
    var_6(decl,"+");
    if ((var_5 != (char *)0x0) && (*var_5 == 'c')) {
      var_5 = var_16(decl,var_5 + 1);
      var_6(decl,"i");
      return var_5;
    }
switchD_002d6986_caseD_3a:
    var_5 = (char *)0x0;
    break;
  case 'e':
    var_5 = var_16(decl,var_1 + 1);
    break;
  case 'i':
    var_1 = var_1 + 1;
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    var_5 = var_8(decl,var_1,var_3);
    return var_5;
  case 'n':
    var_5 = var_1 + 1;
    var_6(decl,"null");
  }
  return var_5;
LAB_002d6a56:
  var_7 = -1;
LAB_002d6a5f:
  var_6(decl,"]");
  return var_5;
}


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

byte * MASKED(undefined8 param_1,char *param_2,long param_3,char param_4)

{
  long lVar1;
  ushort uVar2;
  char *pcVar3;
  ulong uVar4;
  ulong uVar5;
  undefined8 uVar6;
  char cVar7;
  byte *pbVar8;
  ushort uVar9;
  byte *pbVar10;
  bool bVar11;
  char local_42;
  byte local_41;
  long local_40 [2];
  
  if ((param_2 == (char *)0x0) || (local_42 = *param_2, local_42 == '\0'))
  goto switchD_002d6986_caseD_3a;
  switch(local_42) {
  default:
    goto switchD_002d6986_caseD_3a;
  case 'A':
    if (param_4 == 'H') {
      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);
      if (pbVar8 == (byte *)0x0) {
        return (byte *)0x0;
      }
      FUN_002d6040(param_1,&DAT_003763cb);
      while (bVar11 = local_40[0] != 0, local_40[0] = local_40[0] + -1, bVar11) {
        uVar6 = MASKED(param_1,pbVar8,0,0);
        FUN_002d6040(param_1,&DAT_0037aef2);
        pbVar8 = (byte *)MASKED(param_1,uVar6,0);
        if (local_40[0] == 0) goto LAB_002d6a56;
        FUN_002d6040(param_1,", ");
      }
    }
    else {
      pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);
      if (pbVar8 == (byte *)0x0) {
        return (byte *)0x0;
      }
      FUN_002d6040(param_1,&DAT_003763cb);
      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {
        pbVar8 = (byte *)MASKED(param_1,pbVar8,0,0);
        if (local_40[0] == 0) goto LAB_002d6a56;
        FUN_002d6040(param_1,", ");
      }
    }
    goto LAB_002d6a5f;
  case 'N':
    FUN_002d6040(param_1,&DAT_00379a38);
    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2 + 1,(int)param_4);
    break;
  case 'S':
    pbVar8 = (byte *)FUN_002d5f30(param_2 + 1,local_40);
    if (pbVar8 != (byte *)0x0) {
      if (param_3 != 0) {
        FUN_002d6040(param_1,param_3);
      }
      FUN_002d6040(param_1,"(");
      while (lVar1 = local_40[0] + -1, bVar11 = local_40[0] != 0, local_40[0] = lVar1, bVar11) {
        pbVar8 = (byte *)MASKED(param_1,pbVar8,0,0);
        if (local_40[0] == 0) {
          local_40[0] = -1;
          break;
        }
        FUN_002d6040(param_1,", ");
      }
      FUN_002d6040(param_1,&DAT_0038e477);
    }
    break;
  case 'a':
  case 'd':
  case 'w':
    pcVar3 = (char *)FUN_002d5f30(param_2 + 1,local_40);
    if (pcVar3 == (char *)0x0) {
      return (byte *)0x0;
    }
    if (*pcVar3 == '_') {
      pbVar8 = (byte *)(pcVar3 + 1);
      FUN_002d6040(param_1,&DAT_0038e1b1);
      lVar1 = local_40[0] + -1;
      bVar11 = local_40[0] == 0;
      local_40[0] = lVar1;
      if (bVar11) {
LAB_002d6ee0:
        FUN_002d6040(param_1,&DAT_0038e1b1);
        if (local_42 == 'a') {
          return pbVar8;
        }
        FUN_002d63a0(param_1,&local_42,1);
        return pbVar8;
      }
      if (pbVar8 != (byte *)0x0) {
        uVar4 = (ulong)(byte)pcVar3[1];
        uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);
        if ((uVar2 & 0x100) != 0) {
          uVar5 = (ulong)(byte)pcVar3[2];
          uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);
          if ((uVar9 & 0x100) != 0) {
            pbVar10 = pbVar8;
            do {
              cVar7 = (char)uVar4 + -0x30;
              if ((uVar2 & 4) == 0) {
                cVar7 = (char)uVar4 + -0x37;
              }
              if ((uVar9 & 4) == 0) {
                local_41 = ((char)uVar5 - (-((uVar9 & 0x80) == 0) & 0x20U)) - 0x37;
              }
              else {
                local_41 = (char)uVar5 - 0x30;
              }
              local_41 = (byte)((int)cVar7 << 4) | local_41;
              pbVar8 = pbVar10 + 2;
              if (pbVar8 == (byte *)0x0) break;
              switch(local_41) {
              case 9:
                FUN_002d6040(param_1,&DAT_0038ff31);
                break;
              case 10:
                FUN_002d6040(param_1,&DAT_0038ff34);
                break;
              case 0xb:
                FUN_002d6040(param_1,&DAT_0038ff3d);
                break;
              case 0xc:
                FUN_002d6040(param_1,&DAT_0038ff3a);
                break;
              case 0xd:
                FUN_002d6040(param_1,&DAT_0038ff37);
                break;
              default:
                if (((&DAT_003909e0)[(ulong)local_41 * 2] & 0x10) == 0) {
                  FUN_002d6040(param_1,&DAT_0038ff0e);
                  FUN_002d63a0(param_1,pbVar10,2);
                }
                else {
                  FUN_002d63a0(param_1,&local_41,1);
                }
                break;
              case 0x20:
                FUN_002d6040(param_1,&DAT_0038529f);
              }
              lVar1 = local_40[0] + -1;
              bVar11 = local_40[0] == 0;
              local_40[0] = lVar1;
              if (bVar11) goto LAB_002d6ee0;
              uVar4 = (ulong)*pbVar8;
              uVar2 = *(ushort *)(&DAT_003909e0 + uVar4 * 2);
              if ((uVar2 & 0x100) == 0) break;
              uVar5 = (ulong)pbVar10[3];
              uVar9 = *(ushort *)(&DAT_003909e0 + uVar5 * 2);
              pbVar10 = pbVar8;
            } while ((uVar9 & 0x100) != 0);
          }
        }
      }
    }
    goto switchD_002d6986_caseD_3a;
  case 'c':
    pcVar3 = (char *)FUN_002d6720(param_1,param_2 + 1);
    FUN_002d6040(param_1,&DAT_0038536d);
    if ((pcVar3 != (char *)0x0) && (*pcVar3 == 'c')) {
      pbVar8 = (byte *)FUN_002d6720(param_1,pcVar3 + 1);
      FUN_002d6040(param_1,&DAT_0037a19c);
      return pbVar8;
    }
switchD_002d6986_caseD_3a:
    pbVar8 = (byte *)0x0;
    break;
  case 'e':
    pbVar8 = (byte *)FUN_002d6720(param_1,param_2 + 1);
    break;
  case 'i':
    param_2 = param_2 + 1;
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    pbVar8 = (byte *)FUN_002d63d0(param_1,param_2,(int)param_4);
    return pbVar8;
  case 'n':
    pbVar8 = (byte *)(param_2 + 1);
    FUN_002d6040(param_1,&DAT_0038ff2c);
  }
  return pbVar8;
LAB_002d6a56:
  local_40[0] = -1;
LAB_002d6a5f:
  FUN_002d6040(param_1,"]");
  return pbVar8;
}

