
char ** buildargv(char *input)

{
  byte bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  byte bVar5;
  size_t sVar6;
  byte *s;
  char **oldmem;
  char *pcVar7;
  byte *pbVar8;
  char **ppcVar9;
  int iVar10;
  long local_50;
  
  oldmem = (char **)0x0;
  if (input == (char *)0x0) {
    return (char **)0x0;
  }
  bVar4 = false;
  bVar2 = false;
  bVar3 = false;
  sVar6 = strlen(input);
  s = (byte *)xmalloc(sVar6 + 1);
  iVar10 = 0;
  local_50 = 0;
  do {
    while ((_sch_istable[(byte)*input] & 0x40) != 0) {
      input = (char *)((byte *)input + 1);
    }
    if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {
      if (oldmem == (char **)0x0) {
        oldmem = (char **)xmalloc(0x40);
        iVar10 = 8;
      }
      else {
        iVar10 = iVar10 * 2;
        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);
      }
      ppcVar9 = oldmem + local_50;
      *ppcVar9 = (char *)0x0;
    }
    bVar5 = *input;
    pbVar8 = s;
joined_r0x002ea812:
    if (bVar5 != 0) {
      do {
        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {
          bVar2 = false;
          bVar3 = false;
          bVar4 = false;
          break;
        }
        if (bVar4) {
          *pbVar8 = bVar5;
          bVar4 = false;
          pbVar8 = pbVar8 + 1;
        }
        else if (bVar5 == 0x5c) {
          bVar4 = true;
        }
        else if (bVar3) {
          if (bVar5 != 0x27) goto code_r0x002ea86b;
          bVar3 = false;
        }
        else if (bVar2) {
          bVar4 = bVar3;
          if (bVar5 == 0x22) {
            bVar2 = false;
          }
          else {
            *pbVar8 = bVar5;
            pbVar8 = pbVar8 + 1;
          }
        }
        else {
          bVar4 = bVar2;
          if (bVar5 == 0x27) {
            bVar3 = true;
          }
          else {
            bVar3 = bVar2;
            if (bVar5 == 0x22) {
              bVar2 = true;
            }
            else {
              *pbVar8 = bVar5;
              pbVar8 = pbVar8 + 1;
            }
          }
        }
        input = (char *)((byte *)input + 1);
        bVar5 = *input;
        if (bVar5 == 0) break;
      } while( true );
    }
    *pbVar8 = 0;
    pcVar7 = xstrdup((char *)s);
    *ppcVar9 = pcVar7;
    oldmem[local_50 + 1] = (char *)0x0;
    bVar5 = *input;
    bVar1 = (byte)_sch_istable[bVar5];
    while ((bVar1 & 0x40) != 0) {
      input = (char *)((byte *)input + 1);
      bVar5 = *input;
      bVar1 = (byte)_sch_istable[bVar5];
    }
    local_50 = local_50 + 1;
    if (bVar5 == 0) {
      free(s);
      return oldmem;
    }
  } while( true );
code_r0x002ea86b:
  input = (char *)((byte *)input + 1);
  *pbVar8 = bVar5;
  pbVar8 = pbVar8 + 1;
  bVar5 = *input;
  goto joined_r0x002ea812;
}



long FUN_002ea750(byte *param_1)

{
  long lVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  byte bVar6;
  size_t sVar7;
  byte *__ptr;
  long lVar8;
  undefined8 uVar9;
  byte *pbVar10;
  undefined8 *puVar11;
  int iVar12;
  long local_50;
  
  lVar8 = 0;
  if (param_1 == (byte *)0x0) {
    return 0;
  }
  bVar5 = false;
  bVar3 = false;
  bVar4 = false;
  sVar7 = strlen((char *)param_1);
  __ptr = (byte *)FUN_002ee340(sVar7 + 1);
  iVar12 = 0;
  local_50 = 0;
  do {
    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {
      param_1 = param_1 + 1;
    }
    lVar1 = local_50 * 8;
    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {
      if (lVar8 == 0) {
        lVar8 = FUN_002ee340(0x40);
        iVar12 = 8;
      }
      else {
        iVar12 = iVar12 * 2;
        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);
      }
      puVar11 = (undefined8 *)(lVar8 + lVar1);
      *puVar11 = 0;
    }
    bVar6 = *param_1;
    pbVar10 = __ptr;
joined_r0x002ea812:
    if (bVar6 != 0) {
      do {
        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {
          bVar3 = false;
          bVar4 = false;
          bVar5 = false;
          break;
        }
        if (bVar5) {
          *pbVar10 = bVar6;
          bVar5 = false;
          pbVar10 = pbVar10 + 1;
        }
        else if (bVar6 == 0x5c) {
          bVar5 = true;
        }
        else if (bVar4) {
          if (bVar6 != 0x27) goto code_r0x002ea86b;
          bVar4 = false;
        }
        else if (bVar3) {
          bVar5 = bVar4;
          if (bVar6 == 0x22) {
            bVar3 = false;
          }
          else {
            *pbVar10 = bVar6;
            pbVar10 = pbVar10 + 1;
          }
        }
        else {
          bVar5 = bVar3;
          if (bVar6 == 0x27) {
            bVar4 = true;
          }
          else {
            bVar4 = bVar3;
            if (bVar6 == 0x22) {
              bVar3 = true;
            }
            else {
              *pbVar10 = bVar6;
              pbVar10 = pbVar10 + 1;
            }
          }
        }
        param_1 = param_1 + 1;
        bVar6 = *param_1;
        if (bVar6 == 0) break;
      } while( true );
    }
    *pbVar10 = 0;
    uVar9 = FUN_002ee460(__ptr);
    *puVar11 = uVar9;
    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;
    bVar6 = *param_1;
    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];
    while ((bVar2 & 0x40) != 0) {
      param_1 = param_1 + 1;
      bVar6 = *param_1;
      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];
    }
    local_50 = local_50 + 1;
    if (bVar6 == 0) {
      free(__ptr);
      return lVar8;
    }
  } while( true );
code_r0x002ea86b:
  param_1 = param_1 + 1;
  *pbVar10 = bVar6;
  pbVar10 = pbVar10 + 1;
  bVar6 = *param_1;
  goto joined_r0x002ea812;
}


PUSH R15
PUSH R14
XOR R14D,R14D
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
TEST RDI,RDI
JZ 0x002ea8e9
MOV RBX,RDI
XOR R15D,R15D
XOR R12D,R12D
XOR R13D,R13D
CALL 0x00149490
LEA RBP,[0x3a7ea0]
LEA RDI,[RAX + 0x1]
CALL 0x002ee340
XOR R10D,R10D
MOV qword ptr [RSP + 0x18],0x0
MOV qword ptr [RSP + 0x10],RAX
JMP 0x002ea7a4
ADD RBX,0x1
MOVZX EAX,byte ptr [RBX]
TEST byte ptr [RBP + RAX*0x2],0x40
JNZ 0x002ea7a0
MOV RCX,qword ptr [RSP + 0x18]
LEA RSI,[RCX*0x8]
MOV qword ptr [RSP + 0x8],RSI
TEST R10D,R10D
JZ 0x002ea7d0
LEA EAX,[R10 + -0x1]
ADD RSI,R14
CMP EAX,ECX
JG 0x002ea808
TEST R14,R14
JZ 0x002ea990
ADD R10D,R10D
MOV RDI,R14
MOVSXD RSI,R10D
MOV dword ptr [RSP + 0x20],R10D
SHL RSI,0x3
CALL 0x002ee3c0
MOV R10D,dword ptr [RSP + 0x20]
MOV R14,RAX
MOV RAX,qword ptr [RSP + 0x8]
LEA RSI,[R14 + RAX*0x1]
MOV qword ptr [RSI],0x0
MOVZX EAX,byte ptr [RBX]
MOV RDX,qword ptr [RSP + 0x10]
TEST AL,AL
JNZ 0x002ea834
JMP 0x002ea880
MOV byte ptr [RDX],AL
XOR R15D,R15D
ADD RDX,0x1
ADD RBX,0x1
MOVZX EAX,byte ptr [RBX]
TEST AL,AL
JZ 0x002ea880
MOVZX EDI,AL
TEST byte ptr [RBP + RDI*0x2],0x40
JZ 0x002ea84d
MOV EDI,R13D
OR EDI,R15D
OR EDI,R12D
JZ 0x002ea960
TEST R15D,R15D
JNZ 0x002ea820
CMP AL,0x5c
JZ 0x002ea900
TEST R13D,R13D
JZ 0x002ea910
CMP AL,0x27
JZ 0x002ea950
ADD RBX,0x1
MOV byte ptr [RDX],AL
ADD RDX,0x1
MOVZX EAX,byte ptr [RBX]
TEST AL,AL
JNZ 0x002ea834
NOP dword ptr [RAX]
MOV byte ptr [RDX],0x0
MOV RDI,qword ptr [RSP + 0x10]
MOV dword ptr [RSP + 0x2c],R10D
MOV qword ptr [RSP + 0x20],RSI
CALL 0x002ee460
MOV RSI,qword ptr [RSP + 0x20]
MOV R10D,dword ptr [RSP + 0x2c]
MOV qword ptr [RSI],RAX
MOV RAX,qword ptr [RSP + 0x8]
MOV qword ptr [R14 + RAX*0x1 + 0x8],0x0
MOVZX EDX,byte ptr [RBX]
TEST byte ptr [RBP + RDX*0x2],0x40
MOV RAX,RDX
JZ 0x002ea8d1
NOP
ADD RBX,0x1
MOVZX EDX,byte ptr [RBX]
MOV RAX,RDX
TEST byte ptr [RBP + RDX*0x2],0x40
JNZ 0x002ea8c0
ADD qword ptr [RSP + 0x18],0x1
TEST AL,AL
JNZ 0x002ea7a4
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x00149470
ADD RSP,0x38
MOV RAX,R14
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R15D,0x1
JMP 0x002ea829
TEST R12D,R12D
JZ 0x002ea930
CMP AL,0x22
JZ 0x002ea970
MOV byte ptr [RDX],AL
MOV R15D,R13D
ADD RDX,0x1
JMP 0x002ea829
CMP AL,0x27
JZ 0x002ea980
CMP AL,0x22
JZ 0x002ea9b0
MOV byte ptr [RDX],AL
MOV R15D,R12D
MOV R13D,R12D
ADD RDX,0x1
JMP 0x002ea829
XOR R13D,R13D
JMP 0x002ea829
XOR R12D,R12D
XOR R13D,R13D
XOR R15D,R15D
JMP 0x002ea880
MOV R15D,R13D
XOR R12D,R12D
JMP 0x002ea829
MOV R15D,R12D
MOV R13D,0x1
JMP 0x002ea829
MOV EDI,0x40
CALL 0x002ee340
MOV R10D,0x8
MOV R14,RAX
JMP 0x002ea7f8
MOV R15D,R12D
MOV R13D,R12D
MOV R12D,0x1
JMP 0x002ea829
(translation_unit "long FUN_002ea750(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}\n\n" (function_definition "long FUN_002ea750(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_002ea750(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "sVar7 = strlen((char *)param_1);" (assignment_expression "sVar7 = strlen((char *)param_1)" identifier = (call_expression "strlen((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "__ptr = (byte *)FUN_002ee340(sVar7 + 1);" (assignment_expression "__ptr = (byte *)FUN_002ee340(sVar7 + 1)" identifier = (cast_expression "(byte *)FUN_002ee340(sVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ee340(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (do_statement "do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );" do (compound_statement "{\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  }" { (while_statement "while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }" while (parenthesized_expression "(((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0)" ( (binary_expression "((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40)" ( (binary_expression "(&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40" (subscript_expression "(&DAT_003a7ea0)[(ulong)*param_1 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)*param_1 * 2" (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (expression_statement "lVar1 = local_50 * 8;" (assignment_expression "lVar1 = local_50 * 8" identifier = (binary_expression "local_50 * 8" identifier * number_literal)) ;) (if_statement "if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }" if (parenthesized_expression "((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50))" ( (binary_expression "(iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)" ( (comma_expression "puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50" (assignment_expression "puVar11 = (undefined8 *)(lVar1 + lVar8)" identifier = (cast_expression "(undefined8 *)(lVar1 + lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + lVar8)" ( (binary_expression "lVar1 + lVar8" identifier + identifier) )))) , (binary_expression "iVar12 + -1 <= (int)local_50" (binary_expression "iVar12 + -1" identifier + number_literal) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }" { (if_statement "if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }" { (expression_statement "lVar8 = FUN_002ee340(0x40);" (assignment_expression "lVar8 = FUN_002ee340(0x40)" identifier = (call_expression "FUN_002ee340(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" else (compound_statement "{\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" { (expression_statement "iVar12 = iVar12 * 2;" (assignment_expression "iVar12 = iVar12 * 2" identifier = (binary_expression "iVar12 * 2" identifier * number_literal)) ;) (expression_statement "lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);" (assignment_expression "lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3)" identifier = (call_expression "FUN_002ee3c0(lVar8,(long)iVar12 << 3)" identifier (argument_list "(lVar8,(long)iVar12 << 3)" ( identifier , (binary_expression "(long)iVar12 << 3" (cast_expression "(long)iVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) )))) ;) }))) (expression_statement "puVar11 = (undefined8 *)(lVar8 + lVar1);" (assignment_expression "puVar11 = (undefined8 *)(lVar8 + lVar1)" identifier = (cast_expression "(undefined8 *)(lVar8 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + lVar1)" ( (binary_expression "lVar8 + lVar1" identifier + identifier) )))) ;) (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) })) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (labeled_statement "joined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" statement_identifier : (if_statement "if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" { (do_statement "do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );" do (compound_statement "{\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      }" { (if_statement "if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" if (parenthesized_expression "((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3))" ( (binary_expression "(((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)" (parenthesized_expression "(((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0)" ( (binary_expression "((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40)" ( (binary_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40" (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((!bVar4 && !bVar5) && !bVar3)" ( (binary_expression "(!bVar4 && !bVar5) && !bVar3" (parenthesized_expression "(!bVar4 && !bVar5)" ( (binary_expression "!bVar4 && !bVar5" (unary_expression "!bVar4" ! identifier) && (unary_expression "!bVar5" ! identifier)) )) && (unary_expression "!bVar3" ! identifier)) ))) )) (compound_statement "{\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (break_statement "break;" break ;) })) (if_statement "if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }" { (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) (else_clause "else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar6 == 0x5c)" ( (binary_expression "bVar6 == 0x5c" identifier == number_literal) )) (compound_statement "{\n          bVar5 = true;\n        }" { (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) (else_clause "else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }" { (if_statement "if (bVar6 != 0x27) goto code_r0x002ea86b;" if (parenthesized_expression "(bVar6 != 0x27)" ( (binary_expression "bVar6 != 0x27" identifier != number_literal) )) (goto_statement "goto code_r0x002ea86b;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }" { (expression_statement "bVar5 = bVar4;" (assignment_expression "bVar5 = bVar4" identifier = identifier) ;) (if_statement "if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" if (parenthesized_expression "(bVar6 == 0x22)" ( (binary_expression "bVar6 == 0x22" identifier == number_literal) )) (compound_statement "{\n            bVar3 = false;\n          }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" else (compound_statement "{\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" { (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (compound_statement "{\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" { (expression_statement "bVar5 = bVar3;" (assignment_expression "bVar5 = bVar3" identifier = identifier) ;) (if_statement "if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" if (parenthesized_expression "(bVar6 == 0x27)" ( (binary_expression "bVar6 == 0x27" identifier == number_literal) )) (compound_statement "{\n            bVar4 = true;\n          }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" else (compound_statement "{\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" { (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" identifier = identifier) ;) (if_statement "if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" if (parenthesized_expression "(bVar6 == 0x22)" ( (binary_expression "bVar6 == 0x22" identifier == number_literal) )) (compound_statement "{\n              bVar3 = true;\n            }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" else (compound_statement "{\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" { (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }))) }))))))))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar6 == 0) break;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*pbVar10 = 0;" (assignment_expression "*pbVar10 = 0" (pointer_expression "*pbVar10" * identifier) = number_literal) ;) (expression_statement "uVar9 = FUN_002ee460(__ptr);" (assignment_expression "uVar9 = FUN_002ee460(__ptr)" identifier = (call_expression "FUN_002ee460(__ptr)" identifier (argument_list "(__ptr)" ( identifier )))) ;) (expression_statement "*puVar11 = uVar9;" (assignment_expression "*puVar11 = uVar9" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "*(undefined8 *)(lVar8 + 8 + lVar1) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + 8 + lVar1) = 0" (pointer_expression "*(undefined8 *)(lVar8 + 8 + lVar1)" * (cast_expression "(undefined8 *)(lVar8 + 8 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 8 + lVar1)" ( (binary_expression "lVar8 + 8 + lVar1" (binary_expression "lVar8 + 8" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];" (assignment_expression "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2]" identifier = (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ])) ;) (while_statement "while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }" while (parenthesized_expression "((bVar2 & 0x40) != 0)" ( (binary_expression "(bVar2 & 0x40) != 0" (parenthesized_expression "(bVar2 & 0x40)" ( (binary_expression "bVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];" (assignment_expression "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2]" identifier = (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ])) ;) })) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (if_statement "if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__ptr);\n      return lVar8;\n    }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return lVar8;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x002ea86b:\n  param_1 = param_1 + 1;" statement_identifier : (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;)) (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto joined_r0x002ea812;" goto statement_identifier ;) })))
(translation_unit "char ** buildargv(char *input)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  byte bVar5;\n  size_t sVar6;\n  byte *s;\n  char **oldmem;\n  char *pcVar7;\n  byte *pbVar8;\n  char **ppcVar9;\n  int iVar10;\n  long local_50;\n  \n  oldmem = (char **)0x0;\n  if (input == (char *)0x0) {\n    return (char **)0x0;\n  }\n  bVar4 = false;\n  bVar2 = false;\n  bVar3 = false;\n  sVar6 = strlen(input);\n  s = (byte *)xmalloc(sVar6 + 1);\n  iVar10 = 0;\n  local_50 = 0;\n  do {\n    while ((_sch_istable[(byte)*input] & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }\n    bVar5 = *input;\n    pbVar8 = s;\njoined_r0x002ea812:\n    if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }\n    *pbVar8 = 0;\n    pcVar7 = xstrdup((char *)s);\n    *ppcVar9 = pcVar7;\n    oldmem[local_50 + 1] = (char *)0x0;\n    bVar5 = *input;\n    bVar1 = (byte)_sch_istable[bVar5];\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }\n    local_50 = local_50 + 1;\n    if (bVar5 == 0) {\n      free(s);\n      return oldmem;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  input = (char *)((byte *)input + 1);\n  *pbVar8 = bVar5;\n  pbVar8 = pbVar8 + 1;\n  bVar5 = *input;\n  goto joined_r0x002ea812;\n}\n\n" (function_definition "char ** buildargv(char *input)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  byte bVar5;\n  size_t sVar6;\n  byte *s;\n  char **oldmem;\n  char *pcVar7;\n  byte *pbVar8;\n  char **ppcVar9;\n  int iVar10;\n  long local_50;\n  \n  oldmem = (char **)0x0;\n  if (input == (char *)0x0) {\n    return (char **)0x0;\n  }\n  bVar4 = false;\n  bVar2 = false;\n  bVar3 = false;\n  sVar6 = strlen(input);\n  s = (byte *)xmalloc(sVar6 + 1);\n  iVar10 = 0;\n  local_50 = 0;\n  do {\n    while ((_sch_istable[(byte)*input] & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }\n    bVar5 = *input;\n    pbVar8 = s;\njoined_r0x002ea812:\n    if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }\n    *pbVar8 = 0;\n    pcVar7 = xstrdup((char *)s);\n    *ppcVar9 = pcVar7;\n    oldmem[local_50 + 1] = (char *)0x0;\n    bVar5 = *input;\n    bVar1 = (byte)_sch_istable[bVar5];\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }\n    local_50 = local_50 + 1;\n    if (bVar5 == 0) {\n      free(s);\n      return oldmem;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  input = (char *)((byte *)input + 1);\n  *pbVar8 = bVar5;\n  pbVar8 = pbVar8 + 1;\n  bVar5 = *input;\n  goto joined_r0x002ea812;\n}" primitive_type (pointer_declarator "** buildargv(char *input)" * (pointer_declarator "* buildargv(char *input)" * (function_declarator "buildargv(char *input)" identifier (parameter_list "(char *input)" ( (parameter_declaration "char *input" primitive_type (pointer_declarator "*input" * identifier)) ))))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  byte bVar5;\n  size_t sVar6;\n  byte *s;\n  char **oldmem;\n  char *pcVar7;\n  byte *pbVar8;\n  char **ppcVar9;\n  int iVar10;\n  long local_50;\n  \n  oldmem = (char **)0x0;\n  if (input == (char *)0x0) {\n    return (char **)0x0;\n  }\n  bVar4 = false;\n  bVar2 = false;\n  bVar3 = false;\n  sVar6 = strlen(input);\n  s = (byte *)xmalloc(sVar6 + 1);\n  iVar10 = 0;\n  local_50 = 0;\n  do {\n    while ((_sch_istable[(byte)*input] & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }\n    bVar5 = *input;\n    pbVar8 = s;\njoined_r0x002ea812:\n    if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }\n    *pbVar8 = 0;\n    pcVar7 = xstrdup((char *)s);\n    *ppcVar9 = pcVar7;\n    oldmem[local_50 + 1] = (char *)0x0;\n    bVar5 = *input;\n    bVar1 = (byte)_sch_istable[bVar5];\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }\n    local_50 = local_50 + 1;\n    if (bVar5 == 0) {\n      free(s);\n      return oldmem;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  input = (char *)((byte *)input + 1);\n  *pbVar8 = bVar5;\n  pbVar8 = pbVar8 + 1;\n  bVar5 = *input;\n  goto joined_r0x002ea812;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "char **oldmem;" primitive_type (pointer_declarator "**oldmem" * (pointer_declarator "*oldmem" * identifier)) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "char **ppcVar9;" primitive_type (pointer_declarator "**ppcVar9" * (pointer_declarator "*ppcVar9" * identifier)) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "oldmem = (char **)0x0;" (assignment_expression "oldmem = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (input == (char *)0x0) {\n    return (char **)0x0;\n  }" if (parenthesized_expression "(input == (char *)0x0)" ( (binary_expression "input == (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 "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ;) })) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "sVar6 = strlen(input);" (assignment_expression "sVar6 = strlen(input)" identifier = (call_expression "strlen(input)" identifier (argument_list "(input)" ( identifier )))) ;) (expression_statement "s = (byte *)xmalloc(sVar6 + 1);" (assignment_expression "s = (byte *)xmalloc(sVar6 + 1)" identifier = (cast_expression "(byte *)xmalloc(sVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar6 + 1)" identifier (argument_list "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (do_statement "do {\n    while ((_sch_istable[(byte)*input] & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }\n    bVar5 = *input;\n    pbVar8 = s;\njoined_r0x002ea812:\n    if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }\n    *pbVar8 = 0;\n    pcVar7 = xstrdup((char *)s);\n    *ppcVar9 = pcVar7;\n    oldmem[local_50 + 1] = (char *)0x0;\n    bVar5 = *input;\n    bVar1 = (byte)_sch_istable[bVar5];\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }\n    local_50 = local_50 + 1;\n    if (bVar5 == 0) {\n      free(s);\n      return oldmem;\n    }\n  } while( true );" do (compound_statement "{\n    while ((_sch_istable[(byte)*input] & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }\n    bVar5 = *input;\n    pbVar8 = s;\njoined_r0x002ea812:\n    if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }\n    *pbVar8 = 0;\n    pcVar7 = xstrdup((char *)s);\n    *ppcVar9 = pcVar7;\n    oldmem[local_50 + 1] = (char *)0x0;\n    bVar5 = *input;\n    bVar1 = (byte)_sch_istable[bVar5];\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }\n    local_50 = local_50 + 1;\n    if (bVar5 == 0) {\n      free(s);\n      return oldmem;\n    }\n  }" { (while_statement "while ((_sch_istable[(byte)*input] & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }" while (parenthesized_expression "((_sch_istable[(byte)*input] & 0x40) != 0)" ( (binary_expression "(_sch_istable[(byte)*input] & 0x40) != 0" (parenthesized_expression "(_sch_istable[(byte)*input] & 0x40)" ( (binary_expression "_sch_istable[(byte)*input] & 0x40" (subscript_expression "_sch_istable[(byte)*input]" identifier [ (binary_expression "(byte)*input" (parenthesized_expression "(byte)" ( identifier )) * identifier) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      input = (char *)((byte *)input + 1);\n    }" { (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) })) (if_statement "if ((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)) {\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }" if (parenthesized_expression "((iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50))" ( (binary_expression "(iVar10 == 0) || (ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50)" ( (comma_expression "ppcVar9 = oldmem + local_50, iVar10 + -1 <= (int)local_50" (assignment_expression "ppcVar9 = oldmem + local_50" identifier = (binary_expression "oldmem + local_50" identifier + identifier)) , (binary_expression "iVar10 + -1 <= (int)local_50" (binary_expression "iVar10 + -1" identifier + number_literal) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }\n      ppcVar9 = oldmem + local_50;\n      *ppcVar9 = (char *)0x0;\n    }" { (if_statement "if (oldmem == (char **)0x0) {\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }\n      else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }" if (parenthesized_expression "(oldmem == (char **)0x0)" ( (binary_expression "oldmem == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        oldmem = (char **)xmalloc(0x40);\n        iVar10 = 8;\n      }" { (expression_statement "oldmem = (char **)xmalloc(0x40);" (assignment_expression "oldmem = (char **)xmalloc(0x40)" identifier = (cast_expression "(char **)xmalloc(0x40)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }" else (compound_statement "{\n        iVar10 = iVar10 * 2;\n        oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);\n      }" { (expression_statement "iVar10 = iVar10 * 2;" (assignment_expression "iVar10 = iVar10 * 2" identifier = (binary_expression "iVar10 * 2" identifier * number_literal)) ;) (expression_statement "oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3);" (assignment_expression "oldmem = (char **)xrealloc(oldmem,(long)iVar10 << 3)" identifier = (cast_expression "(char **)xrealloc(oldmem,(long)iVar10 << 3)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xrealloc(oldmem,(long)iVar10 << 3)" identifier (argument_list "(oldmem,(long)iVar10 << 3)" ( identifier , (binary_expression "(long)iVar10 << 3" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) }))) (expression_statement "ppcVar9 = oldmem + local_50;" (assignment_expression "ppcVar9 = oldmem + local_50" identifier = (binary_expression "oldmem + local_50" identifier + identifier)) ;) (expression_statement "*ppcVar9 = (char *)0x0;" (assignment_expression "*ppcVar9 = (char *)0x0" (pointer_expression "*ppcVar9" * identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar5 = *input;" (assignment_expression "bVar5 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (expression_statement "pbVar8 = s;" (assignment_expression "pbVar8 = s" identifier = identifier) ;) (labeled_statement "joined_r0x002ea812:\n    if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }" statement_identifier : (if_statement "if (bVar5 != 0) {\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );\n    }" { (do_statement "do {\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      } while( true );" do (compound_statement "{\n        if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }\n        if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar5 = *input;\n        if (bVar5 == 0) break;\n      }" { (if_statement "if (((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }" if (parenthesized_expression "(((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2))" ( (binary_expression "((_sch_istable[bVar5] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)" (parenthesized_expression "((_sch_istable[bVar5] & 0x40) != 0)" ( (binary_expression "(_sch_istable[bVar5] & 0x40) != 0" (parenthesized_expression "(_sch_istable[bVar5] & 0x40)" ( (binary_expression "_sch_istable[bVar5] & 0x40" (subscript_expression "_sch_istable[bVar5]" identifier [ identifier ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((!bVar3 && !bVar4) && !bVar2)" ( (binary_expression "(!bVar3 && !bVar4) && !bVar2" (parenthesized_expression "(!bVar3 && !bVar4)" ( (binary_expression "!bVar3 && !bVar4" (unary_expression "!bVar3" ! identifier) && (unary_expression "!bVar4" ! identifier)) )) && (unary_expression "!bVar2" ! identifier)) ))) )) (compound_statement "{\n          bVar2 = false;\n          bVar3 = false;\n          bVar4 = false;\n          break;\n        }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (break_statement "break;" break ;) })) (if_statement "if (bVar4) {\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }\n        else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          *pbVar8 = bVar5;\n          bVar4 = false;\n          pbVar8 = pbVar8 + 1;\n        }" { (expression_statement "*pbVar8 = bVar5;" (assignment_expression "*pbVar8 = bVar5" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }) (else_clause "else if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar5 == 0x5c) {\n          bVar4 = true;\n        }\n        else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar5 == 0x5c)" ( (binary_expression "bVar5 == 0x5c" identifier == number_literal) )) (compound_statement "{\n          bVar4 = true;\n        }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar3) {\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }\n        else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          if (bVar5 != 0x27) goto code_r0x002ea86b;\n          bVar3 = false;\n        }" { (if_statement "if (bVar5 != 0x27) goto code_r0x002ea86b;" if (parenthesized_expression "(bVar5 != 0x27)" ( (binary_expression "bVar5 != 0x27" identifier != number_literal) )) (goto_statement "goto code_r0x002ea86b;" goto statement_identifier ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar2) {\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }\n        else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n          bVar4 = bVar3;\n          if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }\n        }" { (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" identifier = identifier) ;) (if_statement "if (bVar5 == 0x22) {\n            bVar2 = false;\n          }\n          else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }" if (parenthesized_expression "(bVar5 == 0x22)" ( (binary_expression "bVar5 == 0x22" identifier == number_literal) )) (compound_statement "{\n            bVar2 = false;\n          }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }" else (compound_statement "{\n            *pbVar8 = bVar5;\n            pbVar8 = pbVar8 + 1;\n          }" { (expression_statement "*pbVar8 = bVar5;" (assignment_expression "*pbVar8 = bVar5" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" else (compound_statement "{\n          bVar4 = bVar2;\n          if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }\n        }" { (expression_statement "bVar4 = bVar2;" (assignment_expression "bVar4 = bVar2" identifier = identifier) ;) (if_statement "if (bVar5 == 0x27) {\n            bVar3 = true;\n          }\n          else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }" if (parenthesized_expression "(bVar5 == 0x27)" ( (binary_expression "bVar5 == 0x27" identifier == number_literal) )) (compound_statement "{\n            bVar3 = true;\n          }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }" else (compound_statement "{\n            bVar3 = bVar2;\n            if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }\n          }" { (expression_statement "bVar3 = bVar2;" (assignment_expression "bVar3 = bVar2" identifier = identifier) ;) (if_statement "if (bVar5 == 0x22) {\n              bVar2 = true;\n            }\n            else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }" if (parenthesized_expression "(bVar5 == 0x22)" ( (binary_expression "bVar5 == 0x22" identifier == number_literal) )) (compound_statement "{\n              bVar2 = true;\n            }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }" else (compound_statement "{\n              *pbVar8 = bVar5;\n              pbVar8 = pbVar8 + 1;\n            }" { (expression_statement "*pbVar8 = bVar5;" (assignment_expression "*pbVar8 = bVar5" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }))) }))) }))))))))) (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar5 = *input;" (assignment_expression "bVar5 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (if_statement "if (bVar5 == 0) break;" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*pbVar8 = 0;" (assignment_expression "*pbVar8 = 0" (pointer_expression "*pbVar8" * identifier) = number_literal) ;) (expression_statement "pcVar7 = xstrdup((char *)s);" (assignment_expression "pcVar7 = xstrdup((char *)s)" identifier = (call_expression "xstrdup((char *)s)" identifier (argument_list "((char *)s)" ( (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "*ppcVar9 = pcVar7;" (assignment_expression "*ppcVar9 = pcVar7" (pointer_expression "*ppcVar9" * identifier) = identifier) ;) (expression_statement "oldmem[local_50 + 1] = (char *)0x0;" (assignment_expression "oldmem[local_50 + 1] = (char *)0x0" (subscript_expression "oldmem[local_50 + 1]" identifier [ (binary_expression "local_50 + 1" identifier + number_literal) ]) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar5 = *input;" (assignment_expression "bVar5 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (expression_statement "bVar1 = (byte)_sch_istable[bVar5];" (assignment_expression "bVar1 = (byte)_sch_istable[bVar5]" identifier = (cast_expression "(byte)_sch_istable[bVar5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "_sch_istable[bVar5]" identifier [ identifier ]))) ;) (while_statement "while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }" while (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      input = (char *)((byte *)input + 1);\n      bVar5 = *input;\n      bVar1 = (byte)_sch_istable[bVar5];\n    }" { (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar5 = *input;" (assignment_expression "bVar5 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (expression_statement "bVar1 = (byte)_sch_istable[bVar5];" (assignment_expression "bVar1 = (byte)_sch_istable[bVar5]" identifier = (cast_expression "(byte)_sch_istable[bVar5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "_sch_istable[bVar5]" identifier [ identifier ]))) ;) })) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (if_statement "if (bVar5 == 0) {\n      free(s);\n      return oldmem;\n    }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      free(s);\n      return oldmem;\n    }" { (expression_statement "free(s);" (call_expression "free(s)" identifier (argument_list "(s)" ( identifier ))) ;) (return_statement "return oldmem;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x002ea86b:\n  input = (char *)((byte *)input + 1);" statement_identifier : (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;)) (expression_statement "*pbVar8 = bVar5;" (assignment_expression "*pbVar8 = bVar5" (pointer_expression "*pbVar8" * identifier) = identifier) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "bVar5 = *input;" (assignment_expression "bVar5 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (goto_statement "goto joined_r0x002ea812;" goto statement_identifier ;) })))
(translation_unit "long FUN_002ea750(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}\n\n" (function_definition "long FUN_002ea750(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_002ea750(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "sVar7 = strlen((char *)param_1);" (assignment_expression "sVar7 = strlen((char *)param_1)" identifier = (call_expression "strlen((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "__ptr = (byte *)FUN_002ee340(sVar7 + 1);" (assignment_expression "__ptr = (byte *)FUN_002ee340(sVar7 + 1)" identifier = (cast_expression "(byte *)FUN_002ee340(sVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ee340(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (do_statement "do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );" do (compound_statement "{\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  }" { (while_statement "while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }" while (parenthesized_expression "(((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0)" ( (binary_expression "((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40)" ( (binary_expression "(&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40" (subscript_expression "(&DAT_003a7ea0)[(ulong)*param_1 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)*param_1 * 2" (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (expression_statement "lVar1 = local_50 * 8;" (assignment_expression "lVar1 = local_50 * 8" identifier = (binary_expression "local_50 * 8" identifier * number_literal)) ;) (if_statement "if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }" if (parenthesized_expression "((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50))" ( (binary_expression "(iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)" ( (comma_expression "puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50" (assignment_expression "puVar11 = (undefined8 *)(lVar1 + lVar8)" identifier = (cast_expression "(undefined8 *)(lVar1 + lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + lVar8)" ( (binary_expression "lVar1 + lVar8" identifier + identifier) )))) , (binary_expression "iVar12 + -1 <= (int)local_50" (binary_expression "iVar12 + -1" identifier + number_literal) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }" { (if_statement "if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }" { (expression_statement "lVar8 = FUN_002ee340(0x40);" (assignment_expression "lVar8 = FUN_002ee340(0x40)" identifier = (call_expression "FUN_002ee340(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" else (compound_statement "{\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" { (expression_statement "iVar12 = iVar12 * 2;" (assignment_expression "iVar12 = iVar12 * 2" identifier = (binary_expression "iVar12 * 2" identifier * number_literal)) ;) (expression_statement "lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);" (assignment_expression "lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3)" identifier = (call_expression "FUN_002ee3c0(lVar8,(long)iVar12 << 3)" identifier (argument_list "(lVar8,(long)iVar12 << 3)" ( identifier , (binary_expression "(long)iVar12 << 3" (cast_expression "(long)iVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) )))) ;) }))) (expression_statement "puVar11 = (undefined8 *)(lVar8 + lVar1);" (assignment_expression "puVar11 = (undefined8 *)(lVar8 + lVar1)" identifier = (cast_expression "(undefined8 *)(lVar8 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + lVar1)" ( (binary_expression "lVar8 + lVar1" identifier + identifier) )))) ;) (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) })) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (labeled_statement "joined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" statement_identifier : (if_statement "if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" { (do_statement "do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );" do (compound_statement "{\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      }" { (if_statement "if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" if (parenthesized_expression "((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3))" ( (binary_expression "(((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)" (parenthesized_expression "(((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0)" ( (binary_expression "((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40)" ( (binary_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40" (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((!bVar4 && !bVar5) && !bVar3)" ( (binary_expression "(!bVar4 && !bVar5) && !bVar3" (parenthesized_expression "(!bVar4 && !bVar5)" ( (binary_expression "!bVar4 && !bVar5" (unary_expression "!bVar4" ! identifier) && (unary_expression "!bVar5" ! identifier)) )) && (unary_expression "!bVar3" ! identifier)) ))) )) (compound_statement "{\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (break_statement "break;" break ;) })) (if_statement "if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }" { (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) (else_clause "else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar6 == 0x5c)" ( (binary_expression "bVar6 == 0x5c" identifier == number_literal) )) (compound_statement "{\n          bVar5 = true;\n        }" { (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) (else_clause "else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }" { (if_statement "if (bVar6 != 0x27) goto code_r0x002ea86b;" if (parenthesized_expression "(bVar6 != 0x27)" ( (binary_expression "bVar6 != 0x27" identifier != number_literal) )) (goto_statement "goto code_r0x002ea86b;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }" { (expression_statement "bVar5 = bVar4;" (assignment_expression "bVar5 = bVar4" identifier = identifier) ;) (if_statement "if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" if (parenthesized_expression "(bVar6 == 0x22)" ( (binary_expression "bVar6 == 0x22" identifier == number_literal) )) (compound_statement "{\n            bVar3 = false;\n          }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" else (compound_statement "{\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" { (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (compound_statement "{\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" { (expression_statement "bVar5 = bVar3;" (assignment_expression "bVar5 = bVar3" identifier = identifier) ;) (if_statement "if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" if (parenthesized_expression "(bVar6 == 0x27)" ( (binary_expression "bVar6 == 0x27" identifier == number_literal) )) (compound_statement "{\n            bVar4 = true;\n          }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" else (compound_statement "{\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" { (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" identifier = identifier) ;) (if_statement "if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" if (parenthesized_expression "(bVar6 == 0x22)" ( (binary_expression "bVar6 == 0x22" identifier == number_literal) )) (compound_statement "{\n              bVar3 = true;\n            }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" else (compound_statement "{\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" { (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }))) }))))))))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar6 == 0) break;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*pbVar10 = 0;" (assignment_expression "*pbVar10 = 0" (pointer_expression "*pbVar10" * identifier) = number_literal) ;) (expression_statement "uVar9 = FUN_002ee460(__ptr);" (assignment_expression "uVar9 = FUN_002ee460(__ptr)" identifier = (call_expression "FUN_002ee460(__ptr)" identifier (argument_list "(__ptr)" ( identifier )))) ;) (expression_statement "*puVar11 = uVar9;" (assignment_expression "*puVar11 = uVar9" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "*(undefined8 *)(lVar8 + 8 + lVar1) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + 8 + lVar1) = 0" (pointer_expression "*(undefined8 *)(lVar8 + 8 + lVar1)" * (cast_expression "(undefined8 *)(lVar8 + 8 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 8 + lVar1)" ( (binary_expression "lVar8 + 8 + lVar1" (binary_expression "lVar8 + 8" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];" (assignment_expression "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2]" identifier = (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ])) ;) (while_statement "while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }" while (parenthesized_expression "((bVar2 & 0x40) != 0)" ( (binary_expression "(bVar2 & 0x40) != 0" (parenthesized_expression "(bVar2 & 0x40)" ( (binary_expression "bVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];" (assignment_expression "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2]" identifier = (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" ( (pointer_expression "&DAT_003a7ea0" & identifier) )) [ (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ])) ;) })) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (if_statement "if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__ptr);\n      return lVar8;\n    }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return lVar8;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x002ea86b:\n  param_1 = param_1 + 1;" statement_identifier : (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;)) (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto joined_r0x002ea812;" goto statement_identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT) ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) , (binary_expression (binary_expression IDENT + LIT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (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) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) && (unary_expression ! IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }))) }))))))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ])) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "long FUN_002ea750(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_002ea750(byte *param_1)" (identifier "FUN_002ea750") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  byte bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  long lVar8;\n  undefined8 uVar9;\n  byte *pbVar10;\n  undefined8 *puVar11;\n  int iVar12;\n  long local_50;\n  \n  lVar8 = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar5 = false;\n  bVar3 = false;\n  bVar4 = false;\n  sVar7 = strlen((char *)param_1);\n  __ptr = (byte *)FUN_002ee340(sVar7 + 1);\n  iVar12 = 0;\n  local_50 = 0;\n  do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );\ncode_r0x002ea86b:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar6;\n  pbVar10 = pbVar10 + 1;\n  bVar6 = *param_1;\n  goto joined_r0x002ea812;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "size_t sVar7;" (primitive_type "size_t") (identifier "sVar7") (; ";")) (declaration "byte *__ptr;" (type_identifier "byte") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "undefined8 *puVar11;" (type_identifier "undefined8") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (expression_statement "sVar7 = strlen((char *)param_1);" (assignment_expression "sVar7 = strlen((char *)param_1)" (identifier "sVar7") (= "=") (call_expression "strlen((char *)param_1)" (identifier "strlen") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "__ptr = (byte *)FUN_002ee340(sVar7 + 1);" (assignment_expression "__ptr = (byte *)FUN_002ee340(sVar7 + 1)" (identifier "__ptr") (= "=") (cast_expression "(byte *)FUN_002ee340(sVar7 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002ee340(sVar7 + 1)" (identifier "FUN_002ee340") (argument_list "(sVar7 + 1)" (( "(") (binary_expression "sVar7 + 1" (identifier "sVar7") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    lVar1 = local_50 * 8;\n    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }\n    bVar6 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = FUN_002ee460(__ptr);\n    *puVar11 = uVar9;\n    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;\n    bVar6 = *param_1;\n    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }\n    local_50 = local_50 + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }\n  }" ({ "{") (while_statement "while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }" (while "while") (parenthesized_expression "(((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0)" (( "(") (binary_expression "((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40)" (( "(") (binary_expression "(&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40" (subscript_expression "(&DAT_003a7ea0)[(ulong)*param_1 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" (( "(") (pointer_expression "&DAT_003a7ea0" (& "&") (identifier "DAT_003a7ea0")) () ")")) ([ "[") (binary_expression "(ulong)*param_1 * 2" (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_1")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_1 = param_1 + 1;\n    }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "lVar1 = local_50 * 8;" (assignment_expression "lVar1 = local_50 * 8" (identifier "lVar1") (= "=") (binary_expression "local_50 * 8" (identifier "local_50") (* "*") (number_literal "8"))) (; ";")) (if_statement "if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }" (if "if") (parenthesized_expression "((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50))" (( "(") (binary_expression "(iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)" (( "(") (comma_expression "puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50" (assignment_expression "puVar11 = (undefined8 *)(lVar1 + lVar8)" (identifier "puVar11") (= "=") (cast_expression "(undefined8 *)(lVar1 + lVar8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + lVar8)" (( "(") (binary_expression "lVar1 + lVar8" (identifier "lVar1") (+ "+") (identifier "lVar8")) () ")")))) (, ",") (binary_expression "iVar12 + -1 <= (int)local_50" (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1")) (<= "<=") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")))) () ")"))) () ")")) (compound_statement "{\n      if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }\n      puVar11 = (undefined8 *)(lVar8 + lVar1);\n      *puVar11 = 0;\n    }" ({ "{") (if_statement "if (lVar8 == 0) {\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }\n      else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        lVar8 = FUN_002ee340(0x40);\n        iVar12 = 8;\n      }" ({ "{") (expression_statement "lVar8 = FUN_002ee340(0x40);" (assignment_expression "lVar8 = FUN_002ee340(0x40)" (identifier "lVar8") (= "=") (call_expression "FUN_002ee340(0x40)" (identifier "FUN_002ee340") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" (identifier "iVar12") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" (else "else") (compound_statement "{\n        iVar12 = iVar12 * 2;\n        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);\n      }" ({ "{") (expression_statement "iVar12 = iVar12 * 2;" (assignment_expression "iVar12 = iVar12 * 2" (identifier "iVar12") (= "=") (binary_expression "iVar12 * 2" (identifier "iVar12") (* "*") (number_literal "2"))) (; ";")) (expression_statement "lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);" (assignment_expression "lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3)" (identifier "lVar8") (= "=") (call_expression "FUN_002ee3c0(lVar8,(long)iVar12 << 3)" (identifier "FUN_002ee3c0") (argument_list "(lVar8,(long)iVar12 << 3)" (( "(") (identifier "lVar8") (, ",") (binary_expression "(long)iVar12 << 3" (cast_expression "(long)iVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar12")) (<< "<<") (number_literal "3")) () ")")))) (; ";")) (} "}")))) (expression_statement "puVar11 = (undefined8 *)(lVar8 + lVar1);" (assignment_expression "puVar11 = (undefined8 *)(lVar8 + lVar1)" (identifier "puVar11") (= "=") (cast_expression "(undefined8 *)(lVar8 + lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + lVar1)" (( "(") (binary_expression "lVar8 + lVar1" (identifier "lVar8") (+ "+") (identifier "lVar1")) () ")")))) (; ";")) (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" (identifier "pbVar10") (= "=") (identifier "__ptr")) (; ";")) (labeled_statement "joined_r0x002ea812:\n    if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" (statement_identifier "joined_r0x002ea812") (: ":") (if_statement "if (bVar6 != 0) {\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(bVar6 != 0)" (( "(") (binary_expression "bVar6 != 0" (identifier "bVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" ({ "{") (do_statement "do {\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      } while( true );" (do "do") (compound_statement "{\n        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar6 = *param_1;\n        if (bVar6 == 0) break;\n      }" ({ "{") (if_statement "if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" (if "if") (parenthesized_expression "((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3))" (( "(") (binary_expression "(((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)" (parenthesized_expression "(((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0)" (( "(") (binary_expression "((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40)" (( "(") (binary_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40" (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" (( "(") (pointer_expression "&DAT_003a7ea0" (& "&") (identifier "DAT_003a7ea0")) () ")")) ([ "[") (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar6")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((!bVar4 && !bVar5) && !bVar3)" (( "(") (binary_expression "(!bVar4 && !bVar5) && !bVar3" (parenthesized_expression "(!bVar4 && !bVar5)" (( "(") (binary_expression "!bVar4 && !bVar5" (unary_expression "!bVar4" (! "!") (identifier "bVar4")) (&& "&&") (unary_expression "!bVar5" (! "!") (identifier "bVar5"))) () ")")) (&& "&&") (unary_expression "!bVar3" (! "!") (identifier "bVar3"))) () ")"))) () ")")) (compound_statement "{\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" ({ "{") (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (bVar5) {\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (compound_statement "{\n          *pbVar10 = bVar6;\n          bVar5 = false;\n          pbVar10 = pbVar10 + 1;\n        }" ({ "{") (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (if_statement "if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar6 == 0x5c)" (( "(") (binary_expression "bVar6 == 0x5c" (identifier "bVar6") (== "==") (number_literal "0x5c")) () ")")) (compound_statement "{\n          bVar5 = true;\n        }" ({ "{") (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (if_statement "if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n          if (bVar6 != 0x27) goto code_r0x002ea86b;\n          bVar4 = false;\n        }" ({ "{") (if_statement "if (bVar6 != 0x27) goto code_r0x002ea86b;" (if "if") (parenthesized_expression "(bVar6 != 0x27)" (( "(") (binary_expression "bVar6 != 0x27" (identifier "bVar6") (!= "!=") (number_literal "0x27")) () ")")) (goto_statement "goto code_r0x002ea86b;" (goto "goto") (statement_identifier "code_r0x002ea86b") (; ";"))) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (if_statement "if (bVar3) {\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n          bVar5 = bVar4;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }\n        }" ({ "{") (expression_statement "bVar5 = bVar4;" (assignment_expression "bVar5 = bVar4" (identifier "bVar5") (= "=") (identifier "bVar4")) (; ";")) (if_statement "if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" (if "if") (parenthesized_expression "(bVar6 == 0x22)" (( "(") (binary_expression "bVar6 == 0x22" (identifier "bVar6") (== "==") (number_literal "0x22")) () ")")) (compound_statement "{\n            bVar3 = false;\n          }" ({ "{") (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" (else "else") (compound_statement "{\n            *pbVar10 = bVar6;\n            pbVar10 = pbVar10 + 1;\n          }" ({ "{") (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          bVar5 = bVar3;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" ({ "{") (expression_statement "bVar5 = bVar3;" (assignment_expression "bVar5 = bVar3" (identifier "bVar5") (= "=") (identifier "bVar3")) (; ";")) (if_statement "if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" (if "if") (parenthesized_expression "(bVar6 == 0x27)" (( "(") (binary_expression "bVar6 == 0x27" (identifier "bVar6") (== "==") (number_literal "0x27")) () ")")) (compound_statement "{\n            bVar4 = true;\n          }" ({ "{") (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" (else "else") (compound_statement "{\n            bVar4 = bVar3;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" ({ "{") (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" (identifier "bVar4") (= "=") (identifier "bVar3")) (; ";")) (if_statement "if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" (if "if") (parenthesized_expression "(bVar6 == 0x22)" (( "(") (binary_expression "bVar6 == 0x22" (identifier "bVar6") (== "==") (number_literal "0x22")) () ")")) (compound_statement "{\n              bVar3 = true;\n            }" ({ "{") (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" (else "else") (compound_statement "{\n              *pbVar10 = bVar6;\n              pbVar10 = pbVar10 + 1;\n            }" ({ "{") (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")))) (} "}")))))))))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (bVar6 == 0) break;" (if "if") (parenthesized_expression "(bVar6 == 0)" (( "(") (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "*pbVar10 = 0;" (assignment_expression "*pbVar10 = 0" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = FUN_002ee460(__ptr);" (assignment_expression "uVar9 = FUN_002ee460(__ptr)" (identifier "uVar9") (= "=") (call_expression "FUN_002ee460(__ptr)" (identifier "FUN_002ee460") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")")))) (; ";")) (expression_statement "*puVar11 = uVar9;" (assignment_expression "*puVar11 = uVar9" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined8 *)(lVar8 + 8 + lVar1) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + 8 + lVar1) = 0" (pointer_expression "*(undefined8 *)(lVar8 + 8 + lVar1)" (* "*") (cast_expression "(undefined8 *)(lVar8 + 8 + lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 8 + lVar1)" (( "(") (binary_expression "lVar8 + 8 + lVar1" (binary_expression "lVar8 + 8" (identifier "lVar8") (+ "+") (number_literal "8")) (+ "+") (identifier "lVar1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];" (assignment_expression "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2]" (identifier "bVar2") (= "=") (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" (( "(") (pointer_expression "&DAT_003a7ea0" (& "&") (identifier "DAT_003a7ea0")) () ")")) ([ "[") (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar6")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (while_statement "while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }" (while "while") (parenthesized_expression "((bVar2 & 0x40) != 0)" (( "(") (binary_expression "(bVar2 & 0x40) != 0" (parenthesized_expression "(bVar2 & 0x40)" (( "(") (binary_expression "bVar2 & 0x40" (identifier "bVar2") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_1 = param_1 + 1;\n      bVar6 = *param_1;\n      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];\n    }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];" (assignment_expression "bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2]" (identifier "bVar2") (= "=") (subscript_expression "(&DAT_003a7ea0)[(ulong)bVar6 * 2]" (parenthesized_expression "(&DAT_003a7ea0)" (( "(") (pointer_expression "&DAT_003a7ea0" (& "&") (identifier "DAT_003a7ea0")) () ")")) ([ "[") (binary_expression "(ulong)bVar6 * 2" (cast_expression "(ulong)bVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar6")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (} "}"))) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar6 == 0) {\n      free(__ptr);\n      return lVar8;\n    }" (if "if") (parenthesized_expression "(bVar6 == 0)" (( "(") (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      free(__ptr);\n      return lVar8;\n    }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return lVar8;" (return "return") (identifier "lVar8") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "code_r0x002ea86b:\n  param_1 = param_1 + 1;" (statement_identifier "code_r0x002ea86b") (: ":") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "*pbVar10 = bVar6;" (assignment_expression "*pbVar10 = bVar6" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto joined_r0x002ea812;" (goto "goto") (statement_identifier "joined_r0x002ea812") (; ";")) (} "}")))

char ** function_1(char *var_1)

{
  type_1 var_12;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  type_1 var_9;
  size_t var_4;
  type_1 *s;
  char **var_6;
  char *pcVar7;
  type_1 *var_10;
  char **ppcVar9;
  int var_5;
  long var_7;
  
  var_6 = (char **)0x0;
  if (var_1 == (char *)0x0) {
    return (char **)0x0;
  }
  bVar4 = false;
  bVar2 = false;
  bVar3 = false;
  var_4 = var_2(var_1);
  s = (type_1 *)var_3(var_4 + 1);
  var_5 = 0;
  var_7 = 0;
  do {
    while ((_sch_istable[(type_1)*var_1] & 0x40) != 0) {
      var_1 = (char *)((type_1 *)var_1 + 1);
    }
    if ((var_5 == 0) || (ppcVar9 = var_6 + var_7, var_5 + -1 <= (int)var_7)) {
      if (var_6 == (char **)0x0) {
        var_6 = (char **)var_3(0x40);
        var_5 = 8;
      }
      else {
        var_5 = var_5 * 2;
        var_6 = (char **)var_8(var_6,(long)var_5 << 3);
      }
      ppcVar9 = var_6 + var_7;
      *ppcVar9 = (char *)0x0;
    }
    var_9 = *var_1;
    var_10 = s;
joined_r0x002ea812:
    if (var_9 != 0) {
      do {
        if (((_sch_istable[var_9] & 0x40) != 0) && ((!bVar3 && !bVar4) && !bVar2)) {
          bVar2 = false;
          bVar3 = false;
          bVar4 = false;
          break;
        }
        if (bVar4) {
          *var_10 = var_9;
          bVar4 = false;
          var_10 = var_10 + 1;
        }
        else if (var_9 == 0x5c) {
          bVar4 = true;
        }
        else if (bVar3) {
          if (var_9 != 0x27) goto code_r0x002ea86b;
          bVar3 = false;
        }
        else if (bVar2) {
          bVar4 = bVar3;
          if (var_9 == 0x22) {
            bVar2 = false;
          }
          else {
            *var_10 = var_9;
            var_10 = var_10 + 1;
          }
        }
        else {
          bVar4 = bVar2;
          if (var_9 == 0x27) {
            bVar3 = true;
          }
          else {
            bVar3 = bVar2;
            if (var_9 == 0x22) {
              bVar2 = true;
            }
            else {
              *var_10 = var_9;
              var_10 = var_10 + 1;
            }
          }
        }
        var_1 = (char *)((type_1 *)var_1 + 1);
        var_9 = *var_1;
        if (var_9 == 0) break;
      } while( true );
    }
    *var_10 = 0;
    pcVar7 = var_11((char *)s);
    *ppcVar9 = pcVar7;
    var_6[var_7 + 1] = (char *)0x0;
    var_9 = *var_1;
    var_12 = (type_1)_sch_istable[var_9];
    while ((var_12 & 0x40) != 0) {
      var_1 = (char *)((type_1 *)var_1 + 1);
      var_9 = *var_1;
      var_12 = (type_1)_sch_istable[var_9];
    }
    var_7 = var_7 + 1;
    if (var_9 == 0) {
      var_13(s);
      return var_6;
    }
  } while( true );
code_r0x002ea86b:
  var_1 = (char *)((type_1 *)var_1 + 1);
  *var_10 = var_9;
  var_10 = var_10 + 1;
  var_9 = *var_1;
  goto joined_r0x002ea812;
}


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

long MASKED(byte *param_1)

{
  long lVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  byte bVar6;
  size_t sVar7;
  byte *__ptr;
  long lVar8;
  undefined8 uVar9;
  byte *pbVar10;
  undefined8 *puVar11;
  int iVar12;
  long local_50;
  
  lVar8 = 0;
  if (param_1 == (byte *)0x0) {
    return 0;
  }
  bVar5 = false;
  bVar3 = false;
  bVar4 = false;
  sVar7 = strlen((char *)param_1);
  __ptr = (byte *)FUN_002ee340(sVar7 + 1);
  iVar12 = 0;
  local_50 = 0;
  do {
    while (((&DAT_003a7ea0)[(ulong)*param_1 * 2] & 0x40) != 0) {
      param_1 = param_1 + 1;
    }
    lVar1 = local_50 * 8;
    if ((iVar12 == 0) || (puVar11 = (undefined8 *)(lVar1 + lVar8), iVar12 + -1 <= (int)local_50)) {
      if (lVar8 == 0) {
        lVar8 = FUN_002ee340(0x40);
        iVar12 = 8;
      }
      else {
        iVar12 = iVar12 * 2;
        lVar8 = FUN_002ee3c0(lVar8,(long)iVar12 << 3);
      }
      puVar11 = (undefined8 *)(lVar8 + lVar1);
      *puVar11 = 0;
    }
    bVar6 = *param_1;
    pbVar10 = __ptr;
joined_r0x002ea812:
    if (bVar6 != 0) {
      do {
        if ((((&DAT_003a7ea0)[(ulong)bVar6 * 2] & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {
          bVar3 = false;
          bVar4 = false;
          bVar5 = false;
          break;
        }
        if (bVar5) {
          *pbVar10 = bVar6;
          bVar5 = false;
          pbVar10 = pbVar10 + 1;
        }
        else if (bVar6 == 0x5c) {
          bVar5 = true;
        }
        else if (bVar4) {
          if (bVar6 != 0x27) goto code_r0x002ea86b;
          bVar4 = false;
        }
        else if (bVar3) {
          bVar5 = bVar4;
          if (bVar6 == 0x22) {
            bVar3 = false;
          }
          else {
            *pbVar10 = bVar6;
            pbVar10 = pbVar10 + 1;
          }
        }
        else {
          bVar5 = bVar3;
          if (bVar6 == 0x27) {
            bVar4 = true;
          }
          else {
            bVar4 = bVar3;
            if (bVar6 == 0x22) {
              bVar3 = true;
            }
            else {
              *pbVar10 = bVar6;
              pbVar10 = pbVar10 + 1;
            }
          }
        }
        param_1 = param_1 + 1;
        bVar6 = *param_1;
        if (bVar6 == 0) break;
      } while( true );
    }
    *pbVar10 = 0;
    uVar9 = FUN_002ee460(__ptr);
    *puVar11 = uVar9;
    *(undefined8 *)(lVar8 + 8 + lVar1) = 0;
    bVar6 = *param_1;
    bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];
    while ((bVar2 & 0x40) != 0) {
      param_1 = param_1 + 1;
      bVar6 = *param_1;
      bVar2 = (&DAT_003a7ea0)[(ulong)bVar6 * 2];
    }
    local_50 = local_50 + 1;
    if (bVar6 == 0) {
      free(__ptr);
      return lVar8;
    }
  } while( true );
code_r0x002ea86b:
  param_1 = param_1 + 1;
  *pbVar10 = bVar6;
  pbVar10 = pbVar10 + 1;
  bVar6 = *param_1;
  goto joined_r0x002ea812;
}

