
/* DWARF original prototype: int check_node_accept_bytes(re_dfa_t * dfa, Idx node_idx, re_string_t *
   input, Idx str_idx, re_dfa_t * dfa) */

int __regparm3
check_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx,re_dfa_t *dfa_1)

{
  char cVar1;
  byte bVar2;
  undefined4 *puVar3;
  wint_t __wc;
  byte bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint *extraout_EDX;
  byte *pbVar8;
  int iVar9;
  
  __x86_get_pc_thunk_di();
  cVar1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];
  if (cVar1 == '\a') {
    pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);
    bVar4 = *pbVar8;
    if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {
      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);
      if (bVar4 < 0xe0) {
        if ((byte)(bVar2 + 0x80) < 0x40) {
          return 2;
        }
      }
      else {
        if (bVar4 < 0xf0) {
          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {
            return 0;
          }
          iVar5 = 3;
        }
        else if (bVar4 < 0xf8) {
          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {
            return 0;
          }
          iVar5 = 4;
        }
        else if (bVar4 < 0xfc) {
          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {
            return 0;
          }
          iVar5 = 5;
        }
        else {
          if (0xfd < bVar4) {
            return 0;
          }
          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {
            return 0;
          }
          iVar5 = 6;
        }
        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {
          iVar9 = 1;
          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {
            iVar9 = iVar9 + 1;
            if (iVar5 == iVar9) {
              return iVar5;
            }
          }
        }
      }
    }
  }
  else if (*(int *)(str_idx + 0x50) != 1) {
    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);
    if (cVar1 == '\x05') {
      if (iVar5 < 2) {
        return 0;
      }
      if (((*extraout_EDX & 0x40) == 0) &&
         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {
        return 0;
      }
      if ((*extraout_EDX & 0x80) == 0) {
        return iVar5;
      }
      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);
    }
    else {
      if (cVar1 != '\x06') {
        return 0;
      }
      if (iVar5 < 2) {
        return 0;
      }
      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];
      iVar9 = puVar3[8];
      iVar7 = puVar3[5];
      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {
        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);
        if (0 < iVar7) {
          if (__wc != *(wint_t *)*puVar3) {
            iVar6 = 0;
            do {
              iVar6 = iVar6 + 1;
              if (iVar6 == iVar7) goto LAB_00022904;
            } while (__wc != ((wint_t *)*puVar3)[iVar6]);
          }
LAB_0002294a:
          if ((*(byte *)(puVar3 + 4) & 1) != 0) {
            return 0;
          }
          return iVar5;
        }
LAB_00022904:
        if (0 < (int)puVar3[9]) {
          iVar9 = 0;
          do {
            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));
            if (iVar7 != 0) goto LAB_0002294a;
            iVar9 = iVar9 + 1;
          } while (iVar9 < (int)puVar3[9]);
          iVar9 = puVar3[8];
        }
        if (0 < iVar9) {
          iVar7 = 0;
          do {
            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&
               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;
            iVar7 = iVar7 + 1;
          } while (iVar7 != iVar9);
        }
      }
      bVar4 = *(byte *)(puVar3 + 4) & 1;
    }
    if (bVar4 != 0) {
      return iVar5;
    }
  }
  return 0;
}



int __regparm3 FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  char cVar2;
  byte bVar3;
  wint_t __wc;
  byte bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint *extraout_EDX;
  byte *pbVar8;
  int iVar9;
  
  puVar1 = (undefined4 *)(param_1 + param_3 * 8);
  FUN_0002a042();
  cVar2 = *(char *)(puVar1 + 1);
  if (cVar2 == '\a') {
    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));
    bVar4 = *pbVar8;
    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {
      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);
      if (bVar4 < 0xe0) {
        if ((byte)(bVar3 + 0x80) < 0x40) {
          return 2;
        }
      }
      else {
        if (bVar4 < 0xf0) {
          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {
            return 0;
          }
          iVar5 = 3;
        }
        else if (bVar4 < 0xf8) {
          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {
            return 0;
          }
          iVar5 = 4;
        }
        else if (bVar4 < 0xfc) {
          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {
            return 0;
          }
          iVar5 = 5;
        }
        else {
          if (0xfd < bVar4) {
            return 0;
          }
          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {
            return 0;
          }
          iVar5 = 6;
        }
        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {
          iVar9 = 1;
          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {
            iVar9 = iVar9 + 1;
            if (iVar5 == iVar9) {
              return iVar5;
            }
          }
        }
      }
    }
  }
  else if (*(int *)(param_4 + 0x50) != 1) {
    iVar5 = FUN_0001dcc0();
    if (cVar2 == '\x05') {
      if (iVar5 < 2) {
        return 0;
      }
      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {
        return 0;
      }
      if ((*extraout_EDX & 0x80) == 0) {
        return iVar5;
      }
      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);
    }
    else {
      if (cVar2 != '\x06') {
        return 0;
      }
      if (iVar5 < 2) {
        return 0;
      }
      puVar1 = (undefined4 *)*puVar1;
      iVar9 = puVar1[8];
      iVar7 = puVar1[5];
      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {
        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);
        if (0 < iVar7) {
          if (__wc != *(wint_t *)*puVar1) {
            iVar6 = 0;
            do {
              iVar6 = iVar6 + 1;
              if (iVar6 == iVar7) goto LAB_00022904;
            } while (__wc != ((wint_t *)*puVar1)[iVar6]);
          }
LAB_0002294a:
          if ((*(byte *)(puVar1 + 4) & 1) != 0) {
            return 0;
          }
          return iVar5;
        }
LAB_00022904:
        if (0 < (int)puVar1[9]) {
          iVar9 = 0;
          do {
            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));
            if (iVar7 != 0) goto LAB_0002294a;
            iVar9 = iVar9 + 1;
          } while (iVar9 < (int)puVar1[9]);
          iVar9 = puVar1[8];
        }
        if (0 < iVar9) {
          iVar7 = 0;
          do {
            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&
               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;
            iVar7 = iVar7 + 1;
          } while (iVar7 != iVar9);
        }
      }
      bVar4 = *(byte *)(puVar1 + 4) & 1;
    }
    if (bVar4 != 0) {
      return iVar5;
    }
  }
  return 0;
}


PUSH EBP
LEA EBP,[EAX + ECX*0x8]
PUSH EDI
CALL 0x0002a042
ADD EDI,0x157c6
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOVZX EBX,byte ptr [EBP + 0x4]
MOV ESI,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x8],EDI
CMP BL,0x7
JZ 0x00022960
CMP dword ptr [ESI + 0x50],0x1
JZ 0x00022880
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,dword ptr [ESP + 0x34]
MOV EAX,ESI
CALL 0x0001dcc0
MOV EDI,EAX
CMP BL,0x5
JZ 0x00022890
CMP BL,0x6
JNZ 0x00022880
CMP EAX,0x1
JG 0x000228c0
XOR EDI,EDI
ADD ESP,0x1c
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EAX,0x1
JLE 0x00022880
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
TEST AL,0x40
JNZ 0x000228ac
MOV EDX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESP + 0x34]
CMP byte ptr [EDX + EBX*0x1],0xa
JZ 0x00022880
TEST AL,0x80
JZ 0x00022882
MOV EAX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESP + 0x34]
CMP byte ptr [EAX + EBX*0x1],0x0
JZ 0x00022880
JMP 0x00022882
MOV EBP,dword ptr [EBP]
MOV EBX,dword ptr [EBP + 0x20]
MOV EDX,dword ptr [EBP + 0x14]
TEST EBX,EBX
JNZ 0x000228d8
MOV EAX,EDX
OR EAX,dword ptr [EBP + 0x24]
JZ 0x00022a18
MOV EAX,dword ptr [ESI + 0x8]
MOV ECX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [EAX + ECX*0x4]
TEST EDX,EDX
JLE 0x00022904
MOV ECX,dword ptr [EBP]
CMP ESI,dword ptr [ECX]
JZ 0x0002294a
XOR EAX,EAX
JMP 0x000228fd
CMP ESI,dword ptr [ECX + EAX*0x4]
JZ 0x0002294a
ADD EAX,0x1
CMP EAX,EDX
JNZ 0x000228f8
MOV EAX,dword ptr [EBP + 0x24]
TEST EAX,EAX
JLE 0x000229f1
XOR EDX,EDX
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,ESI
MOV ESI,EDX
JMP 0x0002292c
ADD ESI,0x1
CMP ESI,dword ptr [EBP + 0x24]
JGE 0x000229e8
MOV EAX,dword ptr [EBP + 0xc]
SUB ESP,0x8
PUSH dword ptr [EAX + ESI*0x4]
PUSH EDI
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00012220
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00022920
MOV EDI,dword ptr [ESP + 0xc]
TEST byte ptr [EBP + 0x10],0x1
JZ 0x00022882
JMP 0x00022880
MOV ECX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESP + 0x34]
ADD EDX,ECX
MOVZX EAX,byte ptr [EDX]
CMP AL,0xc1
JBE 0x00022880
MOV EDI,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESI + 0x30]
LEA ESI,[EDI + 0x1]
CMP ESI,EBX
JGE 0x00022880
MOVZX ECX,byte ptr [ECX + EDI*0x1 + 0x1]
CMP AL,0xdf
JBE 0x00022a4b
CMP AL,0xef
JA 0x00022a30
CMP AL,0xe0
JNZ 0x000229a8
CMP CL,0x9f
JBE 0x00022880
MOV EDI,0x3
MOV EAX,dword ptr [ESP + 0x34]
ADD EAX,EDI
CMP EBX,EAX
JL 0x00022880
MOV ECX,0x1
JMP 0x000229d3
ADD ECX,0x1
CMP EDI,ECX
JZ 0x00022882
MOVZX EAX,byte ptr [EDX + ECX*0x1]
ADD EAX,-0x80
CMP AL,0x3f
JBE 0x000229c8
JMP 0x00022880
MOV ESI,EDI
MOV EBX,dword ptr [EBP + 0x20]
MOV EDI,dword ptr [ESP + 0xc]
TEST EBX,EBX
JLE 0x00022a18
MOV EDX,dword ptr [EBP + 0x4]
XOR EAX,EAX
LEA ESI,[ESI]
CMP ESI,dword ptr [EDX + EAX*0x4]
JL 0x00022a11
MOV ECX,dword ptr [EBP + 0x8]
CMP ESI,dword ptr [ECX + EAX*0x4]
JLE 0x0002294a
ADD EAX,0x1
CMP EAX,EBX
JNZ 0x00022a00
TEST byte ptr [EBP + 0x10],0x1
JNZ 0x00022882
JMP 0x00022880
CMP AL,0xf7
JA 0x00022a61
CMP AL,0xf0
JNZ 0x00022a41
CMP CL,0x8f
JBE 0x00022880
MOV EDI,0x4
JMP 0x000229ad
ADD ECX,-0x80
MOV EDI,0x2
CMP CL,0x3f
JBE 0x00022882
JMP 0x00022880
CMP AL,0xfb
JA 0x00022a7c
CMP AL,0xf8
JNZ 0x00022a72
CMP CL,0x87
JBE 0x00022880
MOV EDI,0x5
JMP 0x000229ad
CMP AL,0xfd
JA 0x00022880
CMP AL,0xfc
JNZ 0x00022a91
CMP CL,0x83
JBE 0x00022880
MOV EDI,0x6
JMP 0x000229ad
(translation_unit "int __regparm3 FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *extraout_EDX;" type_identifier (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined4 *)(param_1 + param_3 * 8);" (assignment_expression "puVar1 = (undefined4 *)(param_1 + param_3 * 8)" identifier = (cast_expression "(undefined4 *)(param_1 + param_3 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_3 * 8)" ( (binary_expression "param_1 + param_3 * 8" identifier + (binary_expression "param_3 * 8" identifier * number_literal)) )))) ;) (expression_statement "FUN_0002a042();" (call_expression "FUN_0002a042()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar2 = *(char *)(puVar1 + 1);" (assignment_expression "cVar2 = *(char *)(puVar1 + 1)" identifier = (pointer_expression "*(char *)(puVar1 + 1)" * (cast_expression "(char *)(puVar1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))))) ;) (if_statement "if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(cVar2 == '\a')" ( (binary_expression "cVar2 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));" (assignment_expression "pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4))" identifier = (cast_expression "(byte *)(param_5 + *(int *)(param_4 + 4))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(param_4 + 4))" ( (binary_expression "param_5 + *(int *)(param_4 + 4)" identifier + (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "bVar4 = *pbVar8;" (assignment_expression "bVar4 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30)))" ( (binary_expression "(0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))" (parenthesized_expression "(0xc1 < bVar4)" ( (binary_expression "0xc1 < bVar4" number_literal < identifier) )) && (parenthesized_expression "(param_5 + 1 < *(int *)(param_4 + 0x30))" ( (binary_expression "param_5 + 1 < *(int *)(param_4 + 0x30)" (binary_expression "param_5 + 1" identifier + number_literal) < (pointer_expression "*(int *)(param_4 + 0x30)" * (cast_expression "(int *)(param_4 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x30)" ( (binary_expression "param_4 + 0x30" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);" (assignment_expression "bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" identifier = (pointer_expression "*(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" * (cast_expression "(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 4) + 1 + param_5)" ( (binary_expression "*(int *)(param_4 + 4) + 1 + param_5" (binary_expression "*(int *)(param_4 + 4) + 1" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) + number_literal) + identifier) ))))) ;) (if_statement "if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar4 < 0xe0)" ( (binary_expression "bVar4 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }" { (if_statement "if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }" if (parenthesized_expression "((byte)(bVar3 + 0x80) < 0x40)" ( (binary_expression "(byte)(bVar3 + 0x80) < 0x40" (call_expression "(byte)(bVar3 + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar3 + 0x80)" ( (binary_expression "bVar3 + 0x80" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n          return 2;\n        }" { (return_statement "return 2;" return number_literal ;) })) }) (else_clause "else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" else (compound_statement "{\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" { (if_statement "if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xf0)" ( (binary_expression "bVar4 < 0xf0" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }" { (if_statement "if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xe0) && (bVar3 < 0xa0))" ( (binary_expression "(bVar4 == 0xe0) && (bVar3 < 0xa0)" (parenthesized_expression "(bVar4 == 0xe0)" ( (binary_expression "bVar4 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0xa0)" ( (binary_expression "bVar3 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) }) (else_clause "else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (if_statement "if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xf8)" ( (binary_expression "bVar4 < 0xf8" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }" { (if_statement "if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xf0) && (bVar3 < 0x90))" ( (binary_expression "(bVar4 == 0xf0) && (bVar3 < 0x90)" (parenthesized_expression "(bVar4 == 0xf0)" ( (binary_expression "bVar4 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0x90)" ( (binary_expression "bVar3 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) }) (else_clause "else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (if_statement "if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xfc)" ( (binary_expression "bVar4 < 0xfc" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }" { (if_statement "if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xf8) && (bVar3 < 0x88))" ( (binary_expression "(bVar4 == 0xf8) && (bVar3 < 0x88)" (parenthesized_expression "(bVar4 == 0xf8)" ( (binary_expression "bVar4 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0x88)" ( (binary_expression "bVar3 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) }) (else_clause "else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (compound_statement "{\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" { (if_statement "if (0xfd < bVar4) {\n            return 0;\n          }" if (parenthesized_expression "(0xfd < bVar4)" ( (binary_expression "0xfd < bVar4" number_literal < identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xfc) && (bVar3 < 0x84))" ( (binary_expression "(bVar4 == 0xfc) && (bVar3 < 0x84)" (parenthesized_expression "(bVar4 == 0xfc)" ( (binary_expression "bVar4 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0x84)" ( (binary_expression "bVar3 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) }))))))) (if_statement "if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" if (parenthesized_expression "(param_5 + iVar5 <= *(int *)(param_4 + 0x30))" ( (binary_expression "param_5 + iVar5 <= *(int *)(param_4 + 0x30)" (binary_expression "param_5 + iVar5" identifier + identifier) <= (pointer_expression "*(int *)(param_4 + 0x30)" * (cast_expression "(int *)(param_4 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x30)" ( (binary_expression "param_4 + 0x30" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (while_statement "while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" while (parenthesized_expression "((byte)(pbVar8[iVar9] + 0x80) < 0x40)" ( (binary_expression "(byte)(pbVar8[iVar9] + 0x80) < 0x40" (call_expression "(byte)(pbVar8[iVar9] + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pbVar8[iVar9] + 0x80)" ( (binary_expression "pbVar8[iVar9] + 0x80" (subscript_expression "pbVar8[iVar9]" identifier [ identifier ]) + number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 == iVar9) {\n              return iVar5;\n            }" if (parenthesized_expression "(iVar5 == iVar9)" ( (binary_expression "iVar5 == iVar9" identifier == identifier) )) (compound_statement "{\n              return iVar5;\n            }" { (return_statement "return iVar5;" return identifier ;) })) })) })) }))) })) }) (else_clause "else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" else (if_statement "if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_4 + 0x50) != 1)" ( (binary_expression "*(int *)(param_4 + 0x50) != 1" (pointer_expression "*(int *)(param_4 + 0x50)" * (cast_expression "(int *)(param_4 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x50)" ( (binary_expression "param_4 + 0x50" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" { (expression_statement "iVar5 = FUN_0001dcc0();" (assignment_expression "iVar5 = FUN_0001dcc0()" identifier = (call_expression "FUN_0001dcc0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" if (parenthesized_expression "(cVar2 == '\x05')" ( (binary_expression "cVar2 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }" { (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }" if (parenthesized_expression "(((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'))" ( (binary_expression "((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (parenthesized_expression "((*extraout_EDX & 0x40) == 0)" ( (binary_expression "(*extraout_EDX & 0x40) == 0" (parenthesized_expression "(*extraout_EDX & 0x40)" ( (binary_expression "*extraout_EDX & 0x40" (pointer_expression "*extraout_EDX" * identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" ( (binary_expression "*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'" (pointer_expression "*(char *)(*(int *)(param_4 + 4) + param_5)" * (cast_expression "(char *)(*(int *)(param_4 + 4) + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 4) + param_5)" ( (binary_expression "*(int *)(param_4 + 4) + param_5" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }" if (parenthesized_expression "((*extraout_EDX & 0x80) == 0)" ( (binary_expression "(*extraout_EDX & 0x80) == 0" (parenthesized_expression "(*extraout_EDX & 0x80)" ( (binary_expression "*extraout_EDX & 0x80" (pointer_expression "*extraout_EDX" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);" (assignment_expression "bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5)" identifier = (pointer_expression "*(byte *)(*(int *)(param_4 + 4) + param_5)" * (cast_expression "(byte *)(*(int *)(param_4 + 4) + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 4) + param_5)" ( (binary_expression "*(int *)(param_4 + 4) + param_5" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) + identifier) ))))) ;) }) (else_clause "else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" else (compound_statement "{\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" { (if_statement "if (cVar2 != '\x06') {\n        return 0;\n      }" if (parenthesized_expression "(cVar2 != '\x06')" ( (binary_expression "cVar2 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar1 = (undefined4 *)*puVar1;" (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "iVar9 = puVar1[8];" (assignment_expression "iVar9 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = puVar1[5];" (assignment_expression "iVar7 = puVar1[5]" identifier = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" if (parenthesized_expression "((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0))" ( (binary_expression "(iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 != 0 || puVar1[9] != 0)" ( (binary_expression "iVar7 != 0 || puVar1[9] != 0" (binary_expression "iVar7 != 0" identifier != number_literal) || (binary_expression "puVar1[9] != 0" (subscript_expression "puVar1[9]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" { (expression_statement "__wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" identifier = (pointer_expression "*(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" * (cast_expression "(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 8) + param_5 * 4)" ( (binary_expression "*(int *)(param_4 + 8) + param_5 * 4" (pointer_expression "*(int *)(param_4 + 8)" * (cast_expression "(int *)(param_4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) + (binary_expression "param_5 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" { (if_statement "if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }" if (parenthesized_expression "(__wc != *(wint_t *)*puVar1)" ( (binary_expression "__wc != *(wint_t *)*puVar1" identifier != (pointer_expression "*(wint_t *)*puVar1" * (cast_expression "(wint_t *)*puVar1" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)))) )) (compound_statement "{\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);" do (compound_statement "{\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 == iVar7) goto LAB_00022904;" if (parenthesized_expression "(iVar6 == iVar7)" ( (binary_expression "iVar6 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00022904;" goto statement_identifier ;)) }) while (parenthesized_expression "(__wc != ((wint_t *)*puVar1)[iVar6])" ( (binary_expression "__wc != ((wint_t *)*puVar1)[iVar6]" identifier != (subscript_expression "((wint_t *)*puVar1)[iVar6]" (parenthesized_expression "((wint_t *)*puVar1)" ( (cast_expression "(wint_t *)*puVar1" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) )) [ identifier ])) )) ;) })) (labeled_statement "LAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }" statement_identifier : (if_statement "if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }" if (parenthesized_expression "((*(byte *)(puVar1 + 4) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar1 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 4) & 1)" ( (binary_expression "*(byte *)(puVar1 + 4) & 1" (pointer_expression "*(byte *)(puVar1 + 4)" * (cast_expression "(byte *)(puVar1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) }))) (return_statement "return iVar5;" return identifier ;) })) (labeled_statement "LAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" statement_identifier : (if_statement "if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" if (parenthesized_expression "(0 < (int)puVar1[9])" ( (binary_expression "0 < (int)puVar1[9]" number_literal < (cast_expression "(int)puVar1[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[9]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);" do (compound_statement "{\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          }" { (expression_statement "iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));" (assignment_expression "iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" identifier = (call_expression "iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" identifier (argument_list "(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" ( identifier , (pointer_expression "*(wctype_t *)(puVar1[3] + iVar9 * 4)" * (cast_expression "(wctype_t *)(puVar1[3] + iVar9 * 4)" ( (type_descriptor "wctype_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[3] + iVar9 * 4)" ( (binary_expression "puVar1[3] + iVar9 * 4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_0002294a;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002294a;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 < (int)puVar1[9])" ( (binary_expression "iVar9 < (int)puVar1[9]" identifier < (cast_expression "(int)puVar1[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[9]" identifier [ number_literal ]))) )) ;) (expression_statement "iVar9 = puVar1[8];" (assignment_expression "iVar9 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);" do (compound_statement "{\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          }" { (if_statement "if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;" if (parenthesized_expression "((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4)))" ( (binary_expression "(*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))" (parenthesized_expression "(*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc)" ( (binary_expression "*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar1[1] + iVar7 * 4)" * (cast_expression "(int *)(puVar1[1] + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[1] + iVar7 * 4)" ( (binary_expression "puVar1[1] + iVar7 * 4" (subscript_expression "puVar1[1]" identifier [ number_literal ]) + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) <= (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))" ( (binary_expression "(int)__wc <= *(int *)(puVar1[2] + iVar7 * 4)" (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(puVar1[2] + iVar7 * 4)" * (cast_expression "(int *)(puVar1[2] + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[2] + iVar7 * 4)" ( (binary_expression "puVar1[2] + iVar7 * 4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ))) )) (goto_statement "goto LAB_0002294a;" goto statement_identifier ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != iVar9)" ( (binary_expression "iVar7 != iVar9" identifier != identifier) )) ;) })) })) (expression_statement "bVar4 = *(byte *)(puVar1 + 4) & 1;" (assignment_expression "bVar4 = *(byte *)(puVar1 + 4) & 1" identifier = (binary_expression "*(byte *)(puVar1 + 4) & 1" (pointer_expression "*(byte *)(puVar1 + 4)" * (cast_expression "(byte *)(puVar1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) )))) & number_literal)) ;) }))) (if_statement "if (bVar4 != 0) {\n      return iVar5;\n    }" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar5;\n    }" { (return_statement "return iVar5;" return identifier ;) })) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: int check_node_accept_bytes(re_dfa_t * dfa, Idx node_idx, re_string_t *\n   input, Idx str_idx, re_dfa_t * dfa) */\n\nint __regparm3\ncheck_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx,re_dfa_t *dfa_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  undefined4 *puVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  __x86_get_pc_thunk_di();\n  cVar1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];\n  if (cVar1 == '\a') {\n    pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "int __regparm3\ncheck_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx,re_dfa_t *dfa_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  undefined4 *puVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  __x86_get_pc_thunk_di();\n  cVar1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];\n  if (cVar1 == '\a') {\n    pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "check_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx,re_dfa_t *dfa_1)" identifier (parameter_list "(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx,re_dfa_t *dfa_1)" ( (parameter_declaration "re_dfa_t *dfa" type_identifier (pointer_declarator "*dfa" * identifier)) , (parameter_declaration "Idx node_idx" type_identifier identifier) , (parameter_declaration "re_string_t *input" type_identifier (pointer_declarator "*input" * identifier)) , (parameter_declaration "Idx str_idx" type_identifier identifier) , (parameter_declaration "re_dfa_t *dfa_1" type_identifier (pointer_declarator "*dfa_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  undefined4 *puVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  __x86_get_pc_thunk_di();\n  cVar1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];\n  if (cVar1 == '\a') {\n    pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *extraout_EDX;" type_identifier (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];" (assignment_expression "cVar1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1]" identifier = (cast_expression "(char)(dfa->word_char + (int)input * 2 + -0x18)[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(dfa->word_char + (int)input * 2 + -0x18)[1]" (parenthesized_expression "(dfa->word_char + (int)input * 2 + -0x18)" ( (binary_expression "dfa->word_char + (int)input * 2 + -0x18" (binary_expression "dfa->word_char + (int)input * 2" (field_expression "dfa->word_char" identifier -> field_identifier) + (binary_expression "(int)input * 2" (cast_expression "(int)input" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )) [ number_literal ]))) ;) (if_statement "if (cVar1 == '\a') {\n    pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(cVar1 == '\a')" ( (binary_expression "cVar1 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);" (assignment_expression "pbVar8 = (byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" identifier = (cast_expression "(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" ( (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60" (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4)" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + (pointer_expression "*(int *)(str_idx + 4)" * (cast_expression "(int *)(str_idx + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 4)" ( (binary_expression "str_idx + 4" identifier + number_literal) ))))) + number_literal) )))) ;) (expression_statement "bVar4 = *pbVar8;" (assignment_expression "bVar4 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30)))" ( (binary_expression "(0xc1 < bVar4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))" (parenthesized_expression "(0xc1 < bVar4)" ( (binary_expression "0xc1 < bVar4" number_literal < identifier) )) && (parenthesized_expression "((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))" ( (binary_expression "(int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30)" (cast_expression "(int)((int)&dfa_1->nodes + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&dfa_1->nodes + 1)" ( (binary_expression "(int)&dfa_1->nodes + 1" (cast_expression "(int)&dfa_1->nodes" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dfa_1->nodes" & (field_expression "dfa_1->nodes" identifier -> field_identifier))) + number_literal) ))) < (pointer_expression "*(int *)(str_idx + 0x30)" * (cast_expression "(int *)(str_idx + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 0x30)" ( (binary_expression "str_idx + 0x30" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f);" (assignment_expression "bVar2 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f)" identifier = (pointer_expression "*(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f)" * (cast_expression "(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f)" ( (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x5f" (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4)" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + (pointer_expression "*(int *)(str_idx + 4)" * (cast_expression "(int *)(str_idx + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 4)" ( (binary_expression "str_idx + 4" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (bVar4 < 0xe0) {\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar4 < 0xe0)" ( (binary_expression "bVar4 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }\n      }" { (if_statement "if ((byte)(bVar2 + 0x80) < 0x40) {\n          return 2;\n        }" if (parenthesized_expression "((byte)(bVar2 + 0x80) < 0x40)" ( (binary_expression "(byte)(bVar2 + 0x80) < 0x40" (call_expression "(byte)(bVar2 + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar2 + 0x80)" ( (binary_expression "bVar2 + 0x80" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n          return 2;\n        }" { (return_statement "return 2;" return number_literal ;) })) }) (else_clause "else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" else (compound_statement "{\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" { (if_statement "if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xf0)" ( (binary_expression "bVar4 < 0xf0" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }" { (if_statement "if ((bVar4 == 0xe0) && (bVar2 < 0xa0)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xe0) && (bVar2 < 0xa0))" ( (binary_expression "(bVar4 == 0xe0) && (bVar2 < 0xa0)" (parenthesized_expression "(bVar4 == 0xe0)" ( (binary_expression "bVar4 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) }) (else_clause "else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (if_statement "if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xf8)" ( (binary_expression "bVar4 < 0xf8" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }" { (if_statement "if ((bVar4 == 0xf0) && (bVar2 < 0x90)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xf0) && (bVar2 < 0x90))" ( (binary_expression "(bVar4 == 0xf0) && (bVar2 < 0x90)" (parenthesized_expression "(bVar4 == 0xf0)" ( (binary_expression "bVar4 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) }) (else_clause "else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (if_statement "if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xfc)" ( (binary_expression "bVar4 < 0xfc" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }" { (if_statement "if ((bVar4 == 0xf8) && (bVar2 < 0x88)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xf8) && (bVar2 < 0x88))" ( (binary_expression "(bVar4 == 0xf8) && (bVar2 < 0x88)" (parenthesized_expression "(bVar4 == 0xf8)" ( (binary_expression "bVar4 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) }) (else_clause "else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (compound_statement "{\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" { (if_statement "if (0xfd < bVar4) {\n            return 0;\n          }" if (parenthesized_expression "(0xfd < bVar4)" ( (binary_expression "0xfd < bVar4" number_literal < identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bVar4 == 0xfc) && (bVar2 < 0x84)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xfc) && (bVar2 < 0x84))" ( (binary_expression "(bVar4 == 0xfc) && (bVar2 < 0x84)" (parenthesized_expression "(bVar4 == 0xfc)" ( (binary_expression "bVar4 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) }))))))) (if_statement "if ((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" if (parenthesized_expression "((int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30))" ( (binary_expression "(int)dfa_1->word_char + iVar5 + -0x60 <= *(int *)(str_idx + 0x30)" (binary_expression "(int)dfa_1->word_char + iVar5 + -0x60" (binary_expression "(int)dfa_1->word_char + iVar5" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) <= (pointer_expression "*(int *)(str_idx + 0x30)" * (cast_expression "(int *)(str_idx + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 0x30)" ( (binary_expression "str_idx + 0x30" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (while_statement "while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" while (parenthesized_expression "((byte)(pbVar8[iVar9] + 0x80) < 0x40)" ( (binary_expression "(byte)(pbVar8[iVar9] + 0x80) < 0x40" (call_expression "(byte)(pbVar8[iVar9] + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pbVar8[iVar9] + 0x80)" ( (binary_expression "pbVar8[iVar9] + 0x80" (subscript_expression "pbVar8[iVar9]" identifier [ identifier ]) + number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 == iVar9) {\n              return iVar5;\n            }" if (parenthesized_expression "(iVar5 == iVar9)" ( (binary_expression "iVar5 == iVar9" identifier == identifier) )) (compound_statement "{\n              return iVar5;\n            }" { (return_statement "return iVar5;" return identifier ;) })) })) })) }))) })) }) (else_clause "else if (*(int *)(str_idx + 0x50) != 1) {\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" else (if_statement "if (*(int *)(str_idx + 0x50) != 1) {\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(*(int *)(str_idx + 0x50) != 1)" ( (binary_expression "*(int *)(str_idx + 0x50) != 1" (pointer_expression "*(int *)(str_idx + 0x50)" * (cast_expression "(int *)(str_idx + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 0x50)" ( (binary_expression "str_idx + 0x50" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);\n    if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" { (expression_statement "iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1);" (assignment_expression "iVar5 = re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1)" identifier = (call_expression "re_string_char_size_at((re_string_t *)str_idx,(Idx)dfa_1)" identifier (argument_list "((re_string_t *)str_idx,(Idx)dfa_1)" ( (cast_expression "(re_string_t *)str_idx" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Idx)dfa_1" ( (type_descriptor "Idx" type_identifier) ) identifier) )))) ;) (if_statement "if (cVar1 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }\n    else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }" if (parenthesized_expression "(cVar1 == '\x05')" ( (binary_expression "cVar1 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n    }" { (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n        return 0;\n      }" if (parenthesized_expression "(((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n'))" ( (binary_expression "((*extraout_EDX & 0x40) == 0) &&\n         (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')" (parenthesized_expression "((*extraout_EDX & 0x40) == 0)" ( (binary_expression "(*extraout_EDX & 0x40) == 0" (parenthesized_expression "(*extraout_EDX & 0x40)" ( (binary_expression "*extraout_EDX & 0x40" (pointer_expression "*extraout_EDX" * identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')" ( (binary_expression "*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n'" (pointer_expression "*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" * (cast_expression "(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" ( (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60" (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4)" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + (pointer_expression "*(int *)(str_idx + 4)" * (cast_expression "(int *)(str_idx + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 4)" ( (binary_expression "str_idx + 4" identifier + number_literal) ))))) + number_literal) )))) == (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }" if (parenthesized_expression "((*extraout_EDX & 0x80) == 0)" ( (binary_expression "(*extraout_EDX & 0x80) == 0" (parenthesized_expression "(*extraout_EDX & 0x80)" ( (binary_expression "*extraout_EDX & 0x80" (pointer_expression "*extraout_EDX" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);" (assignment_expression "bVar4 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" identifier = (pointer_expression "*(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" * (cast_expression "(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60)" ( (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60" (binary_expression "(int)dfa_1->word_char + *(int *)(str_idx + 4)" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + (pointer_expression "*(int *)(str_idx + 4)" * (cast_expression "(int *)(str_idx + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 4)" ( (binary_expression "str_idx + 4" identifier + number_literal) ))))) + number_literal) ))))) ;) }) (else_clause "else {\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }" else (compound_statement "{\n      if (cVar1 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n      iVar9 = puVar3[8];\n      iVar7 = puVar3[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar3 + 4) & 1;\n    }" { (if_statement "if (cVar1 != '\x06') {\n        return 0;\n      }" if (parenthesized_expression "(cVar1 != '\x06')" ( (binary_expression "cVar1 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];" (assignment_expression "puVar3 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18]" identifier = (cast_expression "(undefined4 *)dfa->word_char[(int)input * 2 + -0x18]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "dfa->word_char[(int)input * 2 + -0x18]" (field_expression "dfa->word_char" identifier -> field_identifier) [ (binary_expression "(int)input * 2 + -0x18" (binary_expression "(int)input * 2" (cast_expression "(int)input" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ]))) ;) (expression_statement "iVar9 = puVar3[8];" (assignment_expression "iVar9 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = puVar3[5];" (assignment_expression "iVar7 = puVar3[5]" identifier = (subscript_expression "puVar3[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" if (parenthesized_expression "((iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0))" ( (binary_expression "(iVar9 != 0) || (iVar7 != 0 || puVar3[9] != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 != 0 || puVar3[9] != 0)" ( (binary_expression "iVar7 != 0 || puVar3[9] != 0" (binary_expression "iVar7 != 0" identifier != number_literal) || (binary_expression "puVar3[9] != 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" { (expression_statement "__wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4)" identifier = (pointer_expression "*(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4)" * (cast_expression "(wint_t *)(*(int *)(str_idx + 8) + (int)dfa_1 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(str_idx + 8) + (int)dfa_1 * 4)" ( (binary_expression "*(int *)(str_idx + 8) + (int)dfa_1 * 4" (pointer_expression "*(int *)(str_idx + 8)" * (cast_expression "(int *)(str_idx + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 8)" ( (binary_expression "str_idx + 8" identifier + number_literal) )))) + (binary_expression "(int)dfa_1 * 4" (cast_expression "(int)dfa_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" { (if_statement "if (__wc != *(wint_t *)*puVar3) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }" if (parenthesized_expression "(__wc != *(wint_t *)*puVar3)" ( (binary_expression "__wc != *(wint_t *)*puVar3" identifier != (pointer_expression "*(wint_t *)*puVar3" * (cast_expression "(wint_t *)*puVar3" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier)))) )) (compound_statement "{\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);\n          }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar3)[iVar6]);" do (compound_statement "{\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 == iVar7) goto LAB_00022904;" if (parenthesized_expression "(iVar6 == iVar7)" ( (binary_expression "iVar6 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00022904;" goto statement_identifier ;)) }) while (parenthesized_expression "(__wc != ((wint_t *)*puVar3)[iVar6])" ( (binary_expression "__wc != ((wint_t *)*puVar3)[iVar6]" identifier != (subscript_expression "((wint_t *)*puVar3)[iVar6]" (parenthesized_expression "((wint_t *)*puVar3)" ( (cast_expression "(wint_t *)*puVar3" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier)) )) [ identifier ])) )) ;) })) (labeled_statement "LAB_0002294a:\n          if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }" statement_identifier : (if_statement "if ((*(byte *)(puVar3 + 4) & 1) != 0) {\n            return 0;\n          }" if (parenthesized_expression "((*(byte *)(puVar3 + 4) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar3 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar3 + 4) & 1)" ( (binary_expression "*(byte *)(puVar3 + 4) & 1" (pointer_expression "*(byte *)(puVar3 + 4)" * (cast_expression "(byte *)(puVar3 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) }))) (return_statement "return iVar5;" return identifier ;) })) (labeled_statement "LAB_00022904:\n        if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }" statement_identifier : (if_statement "if (0 < (int)puVar3[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }" if (parenthesized_expression "(0 < (int)puVar3[9])" ( (binary_expression "0 < (int)puVar3[9]" number_literal < (cast_expression "(int)puVar3[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar3[9]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);\n          iVar9 = puVar3[8];\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar3[9]);" do (compound_statement "{\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          }" { (expression_statement "iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4));" (assignment_expression "iVar7 = iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4))" identifier = (call_expression "iswctype(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4))" identifier (argument_list "(__wc,*(wctype_t *)(puVar3[3] + iVar9 * 4))" ( identifier , (pointer_expression "*(wctype_t *)(puVar3[3] + iVar9 * 4)" * (cast_expression "(wctype_t *)(puVar3[3] + iVar9 * 4)" ( (type_descriptor "wctype_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[3] + iVar9 * 4)" ( (binary_expression "puVar3[3] + iVar9 * 4" (subscript_expression "puVar3[3]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_0002294a;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002294a;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 < (int)puVar3[9])" ( (binary_expression "iVar9 < (int)puVar3[9]" identifier < (cast_expression "(int)puVar3[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar3[9]" identifier [ number_literal ]))) )) ;) (expression_statement "iVar9 = puVar3[8];" (assignment_expression "iVar9 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);" do (compound_statement "{\n            if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          }" { (if_statement "if ((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))) goto LAB_0002294a;" if (parenthesized_expression "((*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4)))" ( (binary_expression "(*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))" (parenthesized_expression "(*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc)" ( (binary_expression "*(int *)(puVar3[1] + iVar7 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar3[1] + iVar7 * 4)" * (cast_expression "(int *)(puVar3[1] + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[1] + iVar7 * 4)" ( (binary_expression "puVar3[1] + iVar7 * 4" (subscript_expression "puVar3[1]" identifier [ number_literal ]) + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) <= (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)__wc <= *(int *)(puVar3[2] + iVar7 * 4))" ( (binary_expression "(int)__wc <= *(int *)(puVar3[2] + iVar7 * 4)" (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(puVar3[2] + iVar7 * 4)" * (cast_expression "(int *)(puVar3[2] + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[2] + iVar7 * 4)" ( (binary_expression "puVar3[2] + iVar7 * 4" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ))) )) (goto_statement "goto LAB_0002294a;" goto statement_identifier ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != iVar9)" ( (binary_expression "iVar7 != iVar9" identifier != identifier) )) ;) })) })) (expression_statement "bVar4 = *(byte *)(puVar3 + 4) & 1;" (assignment_expression "bVar4 = *(byte *)(puVar3 + 4) & 1" identifier = (binary_expression "*(byte *)(puVar3 + 4) & 1" (pointer_expression "*(byte *)(puVar3 + 4)" * (cast_expression "(byte *)(puVar3 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) & number_literal)) ;) }))) (if_statement "if (bVar4 != 0) {\n      return iVar5;\n    }" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar5;\n    }" { (return_statement "return iVar5;" return identifier ;) })) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *extraout_EDX;" type_identifier (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined4 *)(param_1 + param_3 * 8);" (assignment_expression "puVar1 = (undefined4 *)(param_1 + param_3 * 8)" identifier = (cast_expression "(undefined4 *)(param_1 + param_3 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_3 * 8)" ( (binary_expression "param_1 + param_3 * 8" identifier + (binary_expression "param_3 * 8" identifier * number_literal)) )))) ;) (expression_statement "FUN_0002a042();" (call_expression "FUN_0002a042()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar2 = *(char *)(puVar1 + 1);" (assignment_expression "cVar2 = *(char *)(puVar1 + 1)" identifier = (pointer_expression "*(char *)(puVar1 + 1)" * (cast_expression "(char *)(puVar1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))))) ;) (if_statement "if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(cVar2 == '\a')" ( (binary_expression "cVar2 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));" (assignment_expression "pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4))" identifier = (cast_expression "(byte *)(param_5 + *(int *)(param_4 + 4))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(int *)(param_4 + 4))" ( (binary_expression "param_5 + *(int *)(param_4 + 4)" identifier + (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "bVar4 = *pbVar8;" (assignment_expression "bVar4 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30)))" ( (binary_expression "(0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))" (parenthesized_expression "(0xc1 < bVar4)" ( (binary_expression "0xc1 < bVar4" number_literal < identifier) )) && (parenthesized_expression "(param_5 + 1 < *(int *)(param_4 + 0x30))" ( (binary_expression "param_5 + 1 < *(int *)(param_4 + 0x30)" (binary_expression "param_5 + 1" identifier + number_literal) < (pointer_expression "*(int *)(param_4 + 0x30)" * (cast_expression "(int *)(param_4 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x30)" ( (binary_expression "param_4 + 0x30" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);" (assignment_expression "bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" identifier = (pointer_expression "*(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" * (cast_expression "(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 4) + 1 + param_5)" ( (binary_expression "*(int *)(param_4 + 4) + 1 + param_5" (binary_expression "*(int *)(param_4 + 4) + 1" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) + number_literal) + identifier) ))))) ;) (if_statement "if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar4 < 0xe0)" ( (binary_expression "bVar4 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }" { (if_statement "if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }" if (parenthesized_expression "((byte)(bVar3 + 0x80) < 0x40)" ( (binary_expression "(byte)(bVar3 + 0x80) < 0x40" (call_expression "(byte)(bVar3 + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar3 + 0x80)" ( (binary_expression "bVar3 + 0x80" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n          return 2;\n        }" { (return_statement "return 2;" return number_literal ;) })) }) (else_clause "else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" else (compound_statement "{\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" { (if_statement "if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xf0)" ( (binary_expression "bVar4 < 0xf0" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }" { (if_statement "if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xe0) && (bVar3 < 0xa0))" ( (binary_expression "(bVar4 == 0xe0) && (bVar3 < 0xa0)" (parenthesized_expression "(bVar4 == 0xe0)" ( (binary_expression "bVar4 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0xa0)" ( (binary_expression "bVar3 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) }) (else_clause "else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (if_statement "if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xf8)" ( (binary_expression "bVar4 < 0xf8" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }" { (if_statement "if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xf0) && (bVar3 < 0x90))" ( (binary_expression "(bVar4 == 0xf0) && (bVar3 < 0x90)" (parenthesized_expression "(bVar4 == 0xf0)" ( (binary_expression "bVar4 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0x90)" ( (binary_expression "bVar3 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) }) (else_clause "else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (if_statement "if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" if (parenthesized_expression "(bVar4 < 0xfc)" ( (binary_expression "bVar4 < 0xfc" identifier < number_literal) )) (compound_statement "{\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }" { (if_statement "if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xf8) && (bVar3 < 0x88))" ( (binary_expression "(bVar4 == 0xf8) && (bVar3 < 0x88)" (parenthesized_expression "(bVar4 == 0xf8)" ( (binary_expression "bVar4 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0x88)" ( (binary_expression "bVar3 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) }) (else_clause "else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" else (compound_statement "{\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" { (if_statement "if (0xfd < bVar4) {\n            return 0;\n          }" if (parenthesized_expression "(0xfd < bVar4)" ( (binary_expression "0xfd < bVar4" number_literal < identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar4 == 0xfc) && (bVar3 < 0x84))" ( (binary_expression "(bVar4 == 0xfc) && (bVar3 < 0x84)" (parenthesized_expression "(bVar4 == 0xfc)" ( (binary_expression "bVar4 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar3 < 0x84)" ( (binary_expression "bVar3 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) }))))))) (if_statement "if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" if (parenthesized_expression "(param_5 + iVar5 <= *(int *)(param_4 + 0x30))" ( (binary_expression "param_5 + iVar5 <= *(int *)(param_4 + 0x30)" (binary_expression "param_5 + iVar5" identifier + identifier) <= (pointer_expression "*(int *)(param_4 + 0x30)" * (cast_expression "(int *)(param_4 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x30)" ( (binary_expression "param_4 + 0x30" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (while_statement "while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" while (parenthesized_expression "((byte)(pbVar8[iVar9] + 0x80) < 0x40)" ( (binary_expression "(byte)(pbVar8[iVar9] + 0x80) < 0x40" (call_expression "(byte)(pbVar8[iVar9] + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pbVar8[iVar9] + 0x80)" ( (binary_expression "pbVar8[iVar9] + 0x80" (subscript_expression "pbVar8[iVar9]" identifier [ identifier ]) + number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 == iVar9) {\n              return iVar5;\n            }" if (parenthesized_expression "(iVar5 == iVar9)" ( (binary_expression "iVar5 == iVar9" identifier == identifier) )) (compound_statement "{\n              return iVar5;\n            }" { (return_statement "return iVar5;" return identifier ;) })) })) })) }))) })) }) (else_clause "else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" else (if_statement "if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_4 + 0x50) != 1)" ( (binary_expression "*(int *)(param_4 + 0x50) != 1" (pointer_expression "*(int *)(param_4 + 0x50)" * (cast_expression "(int *)(param_4 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x50)" ( (binary_expression "param_4 + 0x50" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" { (expression_statement "iVar5 = FUN_0001dcc0();" (assignment_expression "iVar5 = FUN_0001dcc0()" identifier = (call_expression "FUN_0001dcc0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" if (parenthesized_expression "(cVar2 == '\x05')" ( (binary_expression "cVar2 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }" { (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }" if (parenthesized_expression "(((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'))" ( (binary_expression "((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (parenthesized_expression "((*extraout_EDX & 0x40) == 0)" ( (binary_expression "(*extraout_EDX & 0x40) == 0" (parenthesized_expression "(*extraout_EDX & 0x40)" ( (binary_expression "*extraout_EDX & 0x40" (pointer_expression "*extraout_EDX" * identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" ( (binary_expression "*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'" (pointer_expression "*(char *)(*(int *)(param_4 + 4) + param_5)" * (cast_expression "(char *)(*(int *)(param_4 + 4) + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 4) + param_5)" ( (binary_expression "*(int *)(param_4 + 4) + param_5" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }" if (parenthesized_expression "((*extraout_EDX & 0x80) == 0)" ( (binary_expression "(*extraout_EDX & 0x80) == 0" (parenthesized_expression "(*extraout_EDX & 0x80)" ( (binary_expression "*extraout_EDX & 0x80" (pointer_expression "*extraout_EDX" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);" (assignment_expression "bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5)" identifier = (pointer_expression "*(byte *)(*(int *)(param_4 + 4) + param_5)" * (cast_expression "(byte *)(*(int *)(param_4 + 4) + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 4) + param_5)" ( (binary_expression "*(int *)(param_4 + 4) + param_5" (pointer_expression "*(int *)(param_4 + 4)" * (cast_expression "(int *)(param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) + identifier) ))))) ;) }) (else_clause "else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" else (compound_statement "{\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" { (if_statement "if (cVar2 != '\x06') {\n        return 0;\n      }" if (parenthesized_expression "(cVar2 != '\x06')" ( (binary_expression "cVar2 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar1 = (undefined4 *)*puVar1;" (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "iVar9 = puVar1[8];" (assignment_expression "iVar9 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = puVar1[5];" (assignment_expression "iVar7 = puVar1[5]" identifier = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" if (parenthesized_expression "((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0))" ( (binary_expression "(iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 != 0 || puVar1[9] != 0)" ( (binary_expression "iVar7 != 0 || puVar1[9] != 0" (binary_expression "iVar7 != 0" identifier != number_literal) || (binary_expression "puVar1[9] != 0" (subscript_expression "puVar1[9]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" { (expression_statement "__wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" identifier = (pointer_expression "*(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" * (cast_expression "(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 8) + param_5 * 4)" ( (binary_expression "*(int *)(param_4 + 8) + param_5 * 4" (pointer_expression "*(int *)(param_4 + 8)" * (cast_expression "(int *)(param_4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) + (binary_expression "param_5 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" { (if_statement "if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }" if (parenthesized_expression "(__wc != *(wint_t *)*puVar1)" ( (binary_expression "__wc != *(wint_t *)*puVar1" identifier != (pointer_expression "*(wint_t *)*puVar1" * (cast_expression "(wint_t *)*puVar1" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)))) )) (compound_statement "{\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);" do (compound_statement "{\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 == iVar7) goto LAB_00022904;" if (parenthesized_expression "(iVar6 == iVar7)" ( (binary_expression "iVar6 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00022904;" goto statement_identifier ;)) }) while (parenthesized_expression "(__wc != ((wint_t *)*puVar1)[iVar6])" ( (binary_expression "__wc != ((wint_t *)*puVar1)[iVar6]" identifier != (subscript_expression "((wint_t *)*puVar1)[iVar6]" (parenthesized_expression "((wint_t *)*puVar1)" ( (cast_expression "(wint_t *)*puVar1" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) )) [ identifier ])) )) ;) })) (labeled_statement "LAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }" statement_identifier : (if_statement "if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }" if (parenthesized_expression "((*(byte *)(puVar1 + 4) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar1 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 4) & 1)" ( (binary_expression "*(byte *)(puVar1 + 4) & 1" (pointer_expression "*(byte *)(puVar1 + 4)" * (cast_expression "(byte *)(puVar1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) }))) (return_statement "return iVar5;" return identifier ;) })) (labeled_statement "LAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" statement_identifier : (if_statement "if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" if (parenthesized_expression "(0 < (int)puVar1[9])" ( (binary_expression "0 < (int)puVar1[9]" number_literal < (cast_expression "(int)puVar1[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[9]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);" do (compound_statement "{\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          }" { (expression_statement "iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));" (assignment_expression "iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" identifier = (call_expression "iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" identifier (argument_list "(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" ( identifier , (pointer_expression "*(wctype_t *)(puVar1[3] + iVar9 * 4)" * (cast_expression "(wctype_t *)(puVar1[3] + iVar9 * 4)" ( (type_descriptor "wctype_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[3] + iVar9 * 4)" ( (binary_expression "puVar1[3] + iVar9 * 4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_0002294a;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002294a;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 < (int)puVar1[9])" ( (binary_expression "iVar9 < (int)puVar1[9]" identifier < (cast_expression "(int)puVar1[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[9]" identifier [ number_literal ]))) )) ;) (expression_statement "iVar9 = puVar1[8];" (assignment_expression "iVar9 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);" do (compound_statement "{\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          }" { (if_statement "if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;" if (parenthesized_expression "((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4)))" ( (binary_expression "(*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))" (parenthesized_expression "(*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc)" ( (binary_expression "*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar1[1] + iVar7 * 4)" * (cast_expression "(int *)(puVar1[1] + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[1] + iVar7 * 4)" ( (binary_expression "puVar1[1] + iVar7 * 4" (subscript_expression "puVar1[1]" identifier [ number_literal ]) + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) <= (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))" ( (binary_expression "(int)__wc <= *(int *)(puVar1[2] + iVar7 * 4)" (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(puVar1[2] + iVar7 * 4)" * (cast_expression "(int *)(puVar1[2] + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[2] + iVar7 * 4)" ( (binary_expression "puVar1[2] + iVar7 * 4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ))) )) (goto_statement "goto LAB_0002294a;" goto statement_identifier ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != iVar9)" ( (binary_expression "iVar7 != iVar9" identifier != identifier) )) ;) })) })) (expression_statement "bVar4 = *(byte *)(puVar1 + 4) & 1;" (assignment_expression "bVar4 = *(byte *)(puVar1 + 4) & 1" identifier = (binary_expression "*(byte *)(puVar1 + 4) & 1" (pointer_expression "*(byte *)(puVar1 + 4)" * (cast_expression "(byte *)(puVar1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) )))) & number_literal)) ;) }))) (if_statement "if (bVar4 != 0) {\n      return iVar5;\n    }" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar5;\n    }" { (return_statement "return iVar5;" return identifier ;) })) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))))))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) })) })) }))) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ IDENT ])) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) }))) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) })))) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00022830(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)" (identifier "FUN_00022830") (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  char cVar2;\n  byte bVar3;\n  wint_t __wc;\n  byte bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  uint *extraout_EDX;\n  byte *pbVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  FUN_0002a042();\n  cVar2 = *(char *)(puVar1 + 1);\n  if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "wint_t __wc;" (type_identifier "wint_t") (identifier "__wc") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint *extraout_EDX;" (type_identifier "uint") (pointer_declarator "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (expression_statement "puVar1 = (undefined4 *)(param_1 + param_3 * 8);" (assignment_expression "puVar1 = (undefined4 *)(param_1 + param_3 * 8)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)(param_1 + param_3 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + param_3 * 8)" (( "(") (binary_expression "param_1 + param_3 * 8" (identifier "param_1") (+ "+") (binary_expression "param_3 * 8" (identifier "param_3") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "FUN_0002a042();" (call_expression "FUN_0002a042()" (identifier "FUN_0002a042") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar2 = *(char *)(puVar1 + 1);" (assignment_expression "cVar2 = *(char *)(puVar1 + 1)" (identifier "cVar2") (= "=") (pointer_expression "*(char *)(puVar1 + 1)" (* "*") (cast_expression "(char *)(puVar1 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (cVar2 == '\a') {\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" (if "if") (parenthesized_expression "(cVar2 == '\a')" (( "(") (binary_expression "cVar2 == '\a'" (identifier "cVar2") (== "==") (char_literal "'\a'" (' "'") (escape_sequence "\a") (' "'"))) () ")")) (compound_statement "{\n    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));\n    bVar4 = *pbVar8;\n    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));" (assignment_expression "pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4))" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(param_5 + *(int *)(param_4 + 4))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(int *)(param_4 + 4))" (( "(") (binary_expression "param_5 + *(int *)(param_4 + 4)" (identifier "param_5") (+ "+") (pointer_expression "*(int *)(param_4 + 4)" (* "*") (cast_expression "(int *)(param_4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "bVar4 = *pbVar8;" (assignment_expression "bVar4 = *pbVar8" (identifier "bVar4") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (if_statement "if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30)))" (( "(") (binary_expression "(0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))" (parenthesized_expression "(0xc1 < bVar4)" (( "(") (binary_expression "0xc1 < bVar4" (number_literal "0xc1") (< "<") (identifier "bVar4")) () ")")) (&& "&&") (parenthesized_expression "(param_5 + 1 < *(int *)(param_4 + 0x30))" (( "(") (binary_expression "param_5 + 1 < *(int *)(param_4 + 0x30)" (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1")) (< "<") (pointer_expression "*(int *)(param_4 + 0x30)" (* "*") (cast_expression "(int *)(param_4 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x30)" (( "(") (binary_expression "param_4 + 0x30" (identifier "param_4") (+ "+") (number_literal "0x30")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);\n      if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);" (assignment_expression "bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" (* "*") (cast_expression "(byte *)(*(int *)(param_4 + 4) + 1 + param_5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 4) + 1 + param_5)" (( "(") (binary_expression "*(int *)(param_4 + 4) + 1 + param_5" (binary_expression "*(int *)(param_4 + 4) + 1" (pointer_expression "*(int *)(param_4 + 4)" (* "*") (cast_expression "(int *)(param_4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (identifier "param_5")) () ")"))))) (; ";")) (if_statement "if (bVar4 < 0xe0) {\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }\n      else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar4 < 0xe0)" (( "(") (binary_expression "bVar4 < 0xe0" (identifier "bVar4") (< "<") (number_literal "0xe0")) () ")")) (compound_statement "{\n        if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }\n      }" ({ "{") (if_statement "if ((byte)(bVar3 + 0x80) < 0x40) {\n          return 2;\n        }" (if "if") (parenthesized_expression "((byte)(bVar3 + 0x80) < 0x40)" (( "(") (binary_expression "(byte)(bVar3 + 0x80) < 0x40" (call_expression "(byte)(bVar3 + 0x80)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar3 + 0x80)" (( "(") (binary_expression "bVar3 + 0x80" (identifier "bVar3") (+ "+") (number_literal "0x80")) () ")"))) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n          return 2;\n        }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\n        if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }\n        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }\n      }" ({ "{") (if_statement "if (bVar4 < 0xf0) {\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }\n        else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" (if "if") (parenthesized_expression "(bVar4 < 0xf0)" (( "(") (binary_expression "bVar4 < 0xf0" (identifier "bVar4") (< "<") (number_literal "0xf0")) () ")")) (compound_statement "{\n          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }\n          iVar5 = 3;\n        }" ({ "{") (if_statement "if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar4 == 0xe0) && (bVar3 < 0xa0))" (( "(") (binary_expression "(bVar4 == 0xe0) && (bVar3 < 0xa0)" (parenthesized_expression "(bVar4 == 0xe0)" (( "(") (binary_expression "bVar4 == 0xe0" (identifier "bVar4") (== "==") (number_literal "0xe0")) () ")")) (&& "&&") (parenthesized_expression "(bVar3 < 0xa0)" (( "(") (binary_expression "bVar3 < 0xa0" (identifier "bVar3") (< "<") (number_literal "0xa0")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" (identifier "iVar5") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" (else "else") (if_statement "if (bVar4 < 0xf8) {\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }\n        else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" (if "if") (parenthesized_expression "(bVar4 < 0xf8)" (( "(") (binary_expression "bVar4 < 0xf8" (identifier "bVar4") (< "<") (number_literal "0xf8")) () ")")) (compound_statement "{\n          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }\n          iVar5 = 4;\n        }" ({ "{") (if_statement "if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar4 == 0xf0) && (bVar3 < 0x90))" (( "(") (binary_expression "(bVar4 == 0xf0) && (bVar3 < 0x90)" (parenthesized_expression "(bVar4 == 0xf0)" (( "(") (binary_expression "bVar4 == 0xf0" (identifier "bVar4") (== "==") (number_literal "0xf0")) () ")")) (&& "&&") (parenthesized_expression "(bVar3 < 0x90)" (( "(") (binary_expression "bVar3 < 0x90" (identifier "bVar3") (< "<") (number_literal "0x90")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" (identifier "iVar5") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" (else "else") (if_statement "if (bVar4 < 0xfc) {\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }\n        else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" (if "if") (parenthesized_expression "(bVar4 < 0xfc)" (( "(") (binary_expression "bVar4 < 0xfc" (identifier "bVar4") (< "<") (number_literal "0xfc")) () ")")) (compound_statement "{\n          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }\n          iVar5 = 5;\n        }" ({ "{") (if_statement "if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar4 == 0xf8) && (bVar3 < 0x88))" (( "(") (binary_expression "(bVar4 == 0xf8) && (bVar3 < 0x88)" (parenthesized_expression "(bVar4 == 0xf8)" (( "(") (binary_expression "bVar4 == 0xf8" (identifier "bVar4") (== "==") (number_literal "0xf8")) () ")")) (&& "&&") (parenthesized_expression "(bVar3 < 0x88)" (( "(") (binary_expression "bVar3 < 0x88" (identifier "bVar3") (< "<") (number_literal "0x88")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" (identifier "iVar5") (= "=") (number_literal "5")) (; ";")) (} "}")) (else_clause "else {\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" (else "else") (compound_statement "{\n          if (0xfd < bVar4) {\n            return 0;\n          }\n          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }\n          iVar5 = 6;\n        }" ({ "{") (if_statement "if (0xfd < bVar4) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(0xfd < bVar4)" (( "(") (binary_expression "0xfd < bVar4" (number_literal "0xfd") (< "<") (identifier "bVar4")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar4 == 0xfc) && (bVar3 < 0x84))" (( "(") (binary_expression "(bVar4 == 0xfc) && (bVar3 < 0x84)" (parenthesized_expression "(bVar4 == 0xfc)" (( "(") (binary_expression "bVar4 == 0xfc" (identifier "bVar4") (== "==") (number_literal "0xfc")) () ")")) (&& "&&") (parenthesized_expression "(bVar3 < 0x84)" (( "(") (binary_expression "bVar3 < 0x84" (identifier "bVar3") (< "<") (number_literal "0x84")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" (identifier "iVar5") (= "=") (number_literal "6")) (; ";")) (} "}")))))))) (if_statement "if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(param_5 + iVar5 <= *(int *)(param_4 + 0x30))" (( "(") (binary_expression "param_5 + iVar5 <= *(int *)(param_4 + 0x30)" (binary_expression "param_5 + iVar5" (identifier "param_5") (+ "+") (identifier "iVar5")) (<= "<=") (pointer_expression "*(int *)(param_4 + 0x30)" (* "*") (cast_expression "(int *)(param_4 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x30)" (( "(") (binary_expression "param_4 + 0x30" (identifier "param_4") (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (compound_statement "{\n          iVar9 = 1;\n          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }\n        }" ({ "{") (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (while_statement "while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" (while "while") (parenthesized_expression "((byte)(pbVar8[iVar9] + 0x80) < 0x40)" (( "(") (binary_expression "(byte)(pbVar8[iVar9] + 0x80) < 0x40" (call_expression "(byte)(pbVar8[iVar9] + 0x80)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(pbVar8[iVar9] + 0x80)" (( "(") (binary_expression "pbVar8[iVar9] + 0x80" (subscript_expression "pbVar8[iVar9]" (identifier "pbVar8") ([ "[") (identifier "iVar9") (] "]")) (+ "+") (number_literal "0x80")) () ")"))) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n            iVar9 = iVar9 + 1;\n            if (iVar5 == iVar9) {\n              return iVar5;\n            }\n          }" ({ "{") (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar5 == iVar9) {\n              return iVar5;\n            }" (if "if") (parenthesized_expression "(iVar5 == iVar9)" (( "(") (binary_expression "iVar5 == iVar9" (identifier "iVar5") (== "==") (identifier "iVar9")) () ")")) (compound_statement "{\n              return iVar5;\n            }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (} "}")) (else_clause "else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" (else "else") (if_statement "if (*(int *)(param_4 + 0x50) != 1) {\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 0x50) != 1)" (( "(") (binary_expression "*(int *)(param_4 + 0x50) != 1" (pointer_expression "*(int *)(param_4 + 0x50)" (* "*") (cast_expression "(int *)(param_4 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x50)" (( "(") (binary_expression "param_4 + 0x50" (identifier "param_4") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    iVar5 = FUN_0001dcc0();\n    if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }\n    if (bVar4 != 0) {\n      return iVar5;\n    }\n  }" ({ "{") (expression_statement "iVar5 = FUN_0001dcc0();" (assignment_expression "iVar5 = FUN_0001dcc0()" (identifier "iVar5") (= "=") (call_expression "FUN_0001dcc0()" (identifier "FUN_0001dcc0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar2 == '\x05') {\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }\n    else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" (if "if") (parenthesized_expression "(cVar2 == '\x05')" (( "(") (binary_expression "cVar2 == '\x05'" (identifier "cVar2") (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n      if (iVar5 < 2) {\n        return 0;\n      }\n      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }\n      if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }\n      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n    }" ({ "{") (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar5 < 2)" (( "(") (binary_expression "iVar5 < 2" (identifier "iVar5") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'))" (( "(") (binary_expression "((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (parenthesized_expression "((*extraout_EDX & 0x40) == 0)" (( "(") (binary_expression "(*extraout_EDX & 0x40) == 0" (parenthesized_expression "(*extraout_EDX & 0x40)" (( "(") (binary_expression "*extraout_EDX & 0x40" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (( "(") (binary_expression "*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'" (pointer_expression "*(char *)(*(int *)(param_4 + 4) + param_5)" (* "*") (cast_expression "(char *)(*(int *)(param_4 + 4) + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 4) + param_5)" (( "(") (binary_expression "*(int *)(param_4 + 4) + param_5" (pointer_expression "*(int *)(param_4 + 4)" (* "*") (cast_expression "(int *)(param_4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "param_5")) () ")")))) (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((*extraout_EDX & 0x80) == 0) {\n        return iVar5;\n      }" (if "if") (parenthesized_expression "((*extraout_EDX & 0x80) == 0)" (( "(") (binary_expression "(*extraout_EDX & 0x80) == 0" (parenthesized_expression "(*extraout_EDX & 0x80)" (( "(") (binary_expression "*extraout_EDX & 0x80" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return iVar5;\n      }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (expression_statement "bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);" (assignment_expression "bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(*(int *)(param_4 + 4) + param_5)" (* "*") (cast_expression "(byte *)(*(int *)(param_4 + 4) + param_5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 4) + param_5)" (( "(") (binary_expression "*(int *)(param_4 + 4) + param_5" (pointer_expression "*(int *)(param_4 + 4)" (* "*") (cast_expression "(int *)(param_4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "param_5")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" (else "else") (compound_statement "{\n      if (cVar2 != '\x06') {\n        return 0;\n      }\n      if (iVar5 < 2) {\n        return 0;\n      }\n      puVar1 = (undefined4 *)*puVar1;\n      iVar9 = puVar1[8];\n      iVar7 = puVar1[5];\n      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }\n      bVar4 = *(byte *)(puVar1 + 4) & 1;\n    }" ({ "{") (if_statement "if (cVar2 != '\x06') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(cVar2 != '\x06')" (( "(") (binary_expression "cVar2 != '\x06'" (identifier "cVar2") (!= "!=") (char_literal "'\x06'" (' "'") (escape_sequence "\x06") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar5 < 2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar5 < 2)" (( "(") (binary_expression "iVar5 < 2" (identifier "iVar5") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "puVar1 = (undefined4 *)*puVar1;" (assignment_expression "puVar1 = (undefined4 *)*puVar1" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "iVar9 = puVar1[8];" (assignment_expression "iVar9 = puVar1[8]" (identifier "iVar9") (= "=") (subscript_expression "puVar1[8]" (identifier "puVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar7 = puVar1[5];" (assignment_expression "iVar7 = puVar1[5]" (identifier "iVar7") (= "=") (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" (if "if") (parenthesized_expression "((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0))" (( "(") (binary_expression "(iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)" (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar7 != 0 || puVar1[9] != 0)" (( "(") (binary_expression "iVar7 != 0 || puVar1[9] != 0" (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "puVar1[9] != 0" (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);\n        if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }\nLAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }\n        if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }\n      }" ({ "{") (expression_statement "__wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" (identifier "__wc") (= "=") (pointer_expression "*(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" (* "*") (cast_expression "(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4)" (( "(") (type_descriptor "wint_t *" (type_identifier "wint_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 8) + param_5 * 4)" (( "(") (binary_expression "*(int *)(param_4 + 8) + param_5 * 4" (pointer_expression "*(int *)(param_4 + 8)" (* "*") (cast_expression "(int *)(param_4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")")))) (+ "+") (binary_expression "param_5 * 4" (identifier "param_5") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (0 < iVar7) {\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n          if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }\nLAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }\n          return iVar5;\n        }" ({ "{") (if_statement "if (__wc != *(wint_t *)*puVar1) {\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }" (if "if") (parenthesized_expression "(__wc != *(wint_t *)*puVar1)" (( "(") (binary_expression "__wc != *(wint_t *)*puVar1" (identifier "__wc") (!= "!=") (pointer_expression "*(wint_t *)*puVar1" (* "*") (cast_expression "(wint_t *)*puVar1" (( "(") (type_descriptor "wint_t *" (type_identifier "wint_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))))) () ")")) (compound_statement "{\n            iVar6 = 0;\n            do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);\n          }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            } while (__wc != ((wint_t *)*puVar1)[iVar6]);" (do "do") (compound_statement "{\n              iVar6 = iVar6 + 1;\n              if (iVar6 == iVar7) goto LAB_00022904;\n            }" ({ "{") (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 == iVar7) goto LAB_00022904;" (if "if") (parenthesized_expression "(iVar6 == iVar7)" (( "(") (binary_expression "iVar6 == iVar7" (identifier "iVar6") (== "==") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_00022904;" (goto "goto") (statement_identifier "LAB_00022904") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(__wc != ((wint_t *)*puVar1)[iVar6])" (( "(") (binary_expression "__wc != ((wint_t *)*puVar1)[iVar6]" (identifier "__wc") (!= "!=") (subscript_expression "((wint_t *)*puVar1)[iVar6]" (parenthesized_expression "((wint_t *)*puVar1)" (( "(") (cast_expression "(wint_t *)*puVar1" (( "(") (type_descriptor "wint_t *" (type_identifier "wint_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")")) ([ "[") (identifier "iVar6") (] "]"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0002294a:\n          if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }" (statement_identifier "LAB_0002294a") (: ":") (if_statement "if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((*(byte *)(puVar1 + 4) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(puVar1 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 4) & 1)" (( "(") (binary_expression "*(byte *)(puVar1 + 4) & 1" (pointer_expression "*(byte *)(puVar1 + 4)" (* "*") (cast_expression "(byte *)(puVar1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 4)" (( "(") (binary_expression "puVar1 + 4" (identifier "puVar1") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (labeled_statement "LAB_00022904:\n        if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" (statement_identifier "LAB_00022904") (: ":") (if_statement "if (0 < (int)puVar1[9]) {\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" (if "if") (parenthesized_expression "(0 < (int)puVar1[9])" (( "(") (binary_expression "0 < (int)puVar1[9]" (number_literal "0") (< "<") (cast_expression "(int)puVar1[9]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]")))) () ")")) (compound_statement "{\n          iVar9 = 0;\n          do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);\n          iVar9 = puVar1[8];\n        }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < (int)puVar1[9]);" (do "do") (compound_statement "{\n            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));\n            if (iVar7 != 0) goto LAB_0002294a;\n            iVar9 = iVar9 + 1;\n          }" ({ "{") (expression_statement "iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));" (assignment_expression "iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" (identifier "iVar7") (= "=") (call_expression "iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" (identifier "iswctype") (argument_list "(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4))" (( "(") (identifier "__wc") (, ",") (pointer_expression "*(wctype_t *)(puVar1[3] + iVar9 * 4)" (* "*") (cast_expression "(wctype_t *)(puVar1[3] + iVar9 * 4)" (( "(") (type_descriptor "wctype_t *" (type_identifier "wctype_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1[3] + iVar9 * 4)" (( "(") (binary_expression "puVar1[3] + iVar9 * 4" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_0002294a;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002294a;" (goto "goto") (statement_identifier "LAB_0002294a") (; ";"))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 < (int)puVar1[9])" (( "(") (binary_expression "iVar9 < (int)puVar1[9]" (identifier "iVar9") (< "<") (cast_expression "(int)puVar1[9]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]")))) () ")")) (; ";")) (expression_statement "iVar9 = puVar1[8];" (assignment_expression "iVar9 = puVar1[8]" (identifier "iVar9") (= "=") (subscript_expression "puVar1[8]" (identifier "puVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")))) (if_statement "if (0 < iVar9) {\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" (if "if") (parenthesized_expression "(0 < iVar9)" (( "(") (binary_expression "0 < iVar9" (number_literal "0") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n          iVar7 = 0;\n          do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);\n        }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          } while (iVar7 != iVar9);" (do "do") (compound_statement "{\n            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;\n            iVar7 = iVar7 + 1;\n          }" ({ "{") (if_statement "if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;" (if "if") (parenthesized_expression "((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4)))" (( "(") (binary_expression "(*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&\n               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))" (parenthesized_expression "(*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc)" (( "(") (binary_expression "*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar1[1] + iVar7 * 4)" (* "*") (cast_expression "(int *)(puVar1[1] + iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1[1] + iVar7 * 4)" (( "(") (binary_expression "puVar1[1] + iVar7 * 4" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")")))) (<= "<=") (cast_expression "(int)__wc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__wc"))) () ")")) (&& "&&") (parenthesized_expression "((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))" (( "(") (binary_expression "(int)__wc <= *(int *)(puVar1[2] + iVar7 * 4)" (cast_expression "(int)__wc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__wc")) (<= "<=") (pointer_expression "*(int *)(puVar1[2] + iVar7 * 4)" (* "*") (cast_expression "(int *)(puVar1[2] + iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1[2] + iVar7 * 4)" (( "(") (binary_expression "puVar1[2] + iVar7 * 4" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_0002294a;" (goto "goto") (statement_identifier "LAB_0002294a") (; ";"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 != iVar9)" (( "(") (binary_expression "iVar7 != iVar9" (identifier "iVar7") (!= "!=") (identifier "iVar9")) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar4 = *(byte *)(puVar1 + 4) & 1;" (assignment_expression "bVar4 = *(byte *)(puVar1 + 4) & 1" (identifier "bVar4") (= "=") (binary_expression "*(byte *)(puVar1 + 4) & 1" (pointer_expression "*(byte *)(puVar1 + 4)" (* "*") (cast_expression "(byte *)(puVar1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 4)" (( "(") (binary_expression "puVar1 + 4" (identifier "puVar1") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (bVar4 != 0) {\n      return iVar5;\n    }" (if "if") (parenthesized_expression "(bVar4 != 0)" (( "(") (binary_expression "bVar4 != 0" (identifier "bVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar5;\n    }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (} "}"))))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* DWARF original prototype: int check_node_accept_bytes(re_dfa_t * dfa, Idx node_idx, re_string_t *
   input, Idx str_idx, re_dfa_t * dfa) */

int __regparm3
function_1(type_1 *dfa,type_2 node_idx,type_3 *input,type_2 var_3,type_1 *dfa_1)

{
  char var_2;
  type_4 var_5;
  type_5 *var_12;
  type_6 var_10;
  type_4 var_4;
  int var_6;
  int var_11;
  int var_9;
  type_7 *extraout_EDX;
  type_4 *pbVar8;
  int var_7;
  
  var_1();
  var_2 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];
  if (var_2 == '\a') {
    pbVar8 = (type_4 *)((int)dfa_1->word_char + *(int *)(var_3 + 4) + -0x60);
    var_4 = *pbVar8;
    if ((0xc1 < var_4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(var_3 + 0x30))) {
      var_5 = *(type_4 *)((int)dfa_1->word_char + *(int *)(var_3 + 4) + -0x5f);
      if (var_4 < 0xe0) {
        if ((type_4)(var_5 + 0x80) < 0x40) {
          return 2;
        }
      }
      else {
        if (var_4 < 0xf0) {
          if ((var_4 == 0xe0) && (var_5 < 0xa0)) {
            return 0;
          }
          var_6 = 3;
        }
        else if (var_4 < 0xf8) {
          if ((var_4 == 0xf0) && (var_5 < 0x90)) {
            return 0;
          }
          var_6 = 4;
        }
        else if (var_4 < 0xfc) {
          if ((var_4 == 0xf8) && (var_5 < 0x88)) {
            return 0;
          }
          var_6 = 5;
        }
        else {
          if (0xfd < var_4) {
            return 0;
          }
          if ((var_4 == 0xfc) && (var_5 < 0x84)) {
            return 0;
          }
          var_6 = 6;
        }
        if ((int)dfa_1->word_char + var_6 + -0x60 <= *(int *)(var_3 + 0x30)) {
          var_7 = 1;
          while ((type_4)(pbVar8[var_7] + 0x80) < 0x40) {
            var_7 = var_7 + 1;
            if (var_6 == var_7) {
              return var_6;
            }
          }
        }
      }
    }
  }
  else if (*(int *)(var_3 + 0x50) != 1) {
    var_6 = var_8((type_3 *)var_3,(type_2)dfa_1);
    if (var_2 == '\x05') {
      if (var_6 < 2) {
        return 0;
      }
      if (((*extraout_EDX & 0x40) == 0) &&
         (*(char *)((int)dfa_1->word_char + *(int *)(var_3 + 4) + -0x60) == '\n')) {
        return 0;
      }
      if ((*extraout_EDX & 0x80) == 0) {
        return var_6;
      }
      var_4 = *(type_4 *)((int)dfa_1->word_char + *(int *)(var_3 + 4) + -0x60);
    }
    else {
      if (var_2 != '\x06') {
        return 0;
      }
      if (var_6 < 2) {
        return 0;
      }
      var_12 = (type_5 *)dfa->word_char[(int)input * 2 + -0x18];
      var_7 = var_12[8];
      var_9 = var_12[5];
      if ((var_7 != 0) || (var_9 != 0 || var_12[9] != 0)) {
        var_10 = *(type_6 *)(*(int *)(var_3 + 8) + (int)dfa_1 * 4);
        if (0 < var_9) {
          if (var_10 != *(type_6 *)*var_12) {
            var_11 = 0;
            do {
              var_11 = var_11 + 1;
              if (var_11 == var_9) goto LAB_00022904;
            } while (var_10 != ((type_6 *)*var_12)[var_11]);
          }
LAB_0002294a:
          if ((*(type_4 *)(var_12 + 4) & 1) != 0) {
            return 0;
          }
          return var_6;
        }
LAB_00022904:
        if (0 < (int)var_12[9]) {
          var_7 = 0;
          do {
            var_9 = var_13(var_10,*(type_8 *)(var_12[3] + var_7 * 4));
            if (var_9 != 0) goto LAB_0002294a;
            var_7 = var_7 + 1;
          } while (var_7 < (int)var_12[9]);
          var_7 = var_12[8];
        }
        if (0 < var_7) {
          var_9 = 0;
          do {
            if ((*(int *)(var_12[1] + var_9 * 4) <= (int)var_10) &&
               ((int)var_10 <= *(int *)(var_12[2] + var_9 * 4))) goto LAB_0002294a;
            var_9 = var_9 + 1;
          } while (var_9 != var_7);
        }
      }
      var_4 = *(type_4 *)(var_12 + 4) & 1;
    }
    if (var_4 != 0) {
      return var_6;
    }
  }
  return 0;
}


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

int __regparm3 MASKED(int param_1,undefined4 param_2,int param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  char cVar2;
  byte bVar3;
  wint_t __wc;
  byte bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint *extraout_EDX;
  byte *pbVar8;
  int iVar9;
  
  puVar1 = (undefined4 *)(param_1 + param_3 * 8);
  FUN_0002a042();
  cVar2 = *(char *)(puVar1 + 1);
  if (cVar2 == '\a') {
    pbVar8 = (byte *)(param_5 + *(int *)(param_4 + 4));
    bVar4 = *pbVar8;
    if ((0xc1 < bVar4) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {
      bVar3 = *(byte *)(*(int *)(param_4 + 4) + 1 + param_5);
      if (bVar4 < 0xe0) {
        if ((byte)(bVar3 + 0x80) < 0x40) {
          return 2;
        }
      }
      else {
        if (bVar4 < 0xf0) {
          if ((bVar4 == 0xe0) && (bVar3 < 0xa0)) {
            return 0;
          }
          iVar5 = 3;
        }
        else if (bVar4 < 0xf8) {
          if ((bVar4 == 0xf0) && (bVar3 < 0x90)) {
            return 0;
          }
          iVar5 = 4;
        }
        else if (bVar4 < 0xfc) {
          if ((bVar4 == 0xf8) && (bVar3 < 0x88)) {
            return 0;
          }
          iVar5 = 5;
        }
        else {
          if (0xfd < bVar4) {
            return 0;
          }
          if ((bVar4 == 0xfc) && (bVar3 < 0x84)) {
            return 0;
          }
          iVar5 = 6;
        }
        if (param_5 + iVar5 <= *(int *)(param_4 + 0x30)) {
          iVar9 = 1;
          while ((byte)(pbVar8[iVar9] + 0x80) < 0x40) {
            iVar9 = iVar9 + 1;
            if (iVar5 == iVar9) {
              return iVar5;
            }
          }
        }
      }
    }
  }
  else if (*(int *)(param_4 + 0x50) != 1) {
    iVar5 = FUN_0001dcc0();
    if (cVar2 == '\x05') {
      if (iVar5 < 2) {
        return 0;
      }
      if (((*extraout_EDX & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {
        return 0;
      }
      if ((*extraout_EDX & 0x80) == 0) {
        return iVar5;
      }
      bVar4 = *(byte *)(*(int *)(param_4 + 4) + param_5);
    }
    else {
      if (cVar2 != '\x06') {
        return 0;
      }
      if (iVar5 < 2) {
        return 0;
      }
      puVar1 = (undefined4 *)*puVar1;
      iVar9 = puVar1[8];
      iVar7 = puVar1[5];
      if ((iVar9 != 0) || (iVar7 != 0 || puVar1[9] != 0)) {
        __wc = *(wint_t *)(*(int *)(param_4 + 8) + param_5 * 4);
        if (0 < iVar7) {
          if (__wc != *(wint_t *)*puVar1) {
            iVar6 = 0;
            do {
              iVar6 = iVar6 + 1;
              if (iVar6 == iVar7) goto LAB_00022904;
            } while (__wc != ((wint_t *)*puVar1)[iVar6]);
          }
LAB_0002294a:
          if ((*(byte *)(puVar1 + 4) & 1) != 0) {
            return 0;
          }
          return iVar5;
        }
LAB_00022904:
        if (0 < (int)puVar1[9]) {
          iVar9 = 0;
          do {
            iVar7 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar9 * 4));
            if (iVar7 != 0) goto LAB_0002294a;
            iVar9 = iVar9 + 1;
          } while (iVar9 < (int)puVar1[9]);
          iVar9 = puVar1[8];
        }
        if (0 < iVar9) {
          iVar7 = 0;
          do {
            if ((*(int *)(puVar1[1] + iVar7 * 4) <= (int)__wc) &&
               ((int)__wc <= *(int *)(puVar1[2] + iVar7 * 4))) goto LAB_0002294a;
            iVar7 = iVar7 + 1;
          } while (iVar7 != iVar9);
        }
      }
      bVar4 = *(byte *)(puVar1 + 4) & 1;
    }
    if (bVar4 != 0) {
      return iVar5;
    }
  }
  return 0;
}

