
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* 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)

{
  undefined1 *puVar1;
  wint_t *pwVar2;
  char cVar3;
  byte bVar4;
  undefined4 *puVar5;
  wint_t __wc;
  byte bVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  
  cVar3 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];
  if (cVar3 == '\a') {
    iVar9 = *(int *)(str_idx + 4);
    bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);
    if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {
      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);
      if (bVar6 < 0xe0) {
        iVar9 = 2;
      }
      else {
        if (bVar6 < 0xf0) {
          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {
            return 0;
          }
          iVar10 = 3;
        }
        else if (bVar6 < 0xf8) {
          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {
            return 0;
          }
          iVar10 = 4;
        }
        else if (bVar6 < 0xfc) {
          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {
            return 0;
          }
          iVar10 = 5;
        }
        else {
          if (0xfd < bVar6) {
            return 0;
          }
          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {
            return 0;
          }
          iVar10 = 6;
        }
        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {
          return 0;
        }
        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {
          return 0;
        }
        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {
          return 0;
        }
        if (iVar10 == 3) {
          return 3;
        }
        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {
          return 0;
        }
        if (iVar10 == 4) {
          return 4;
        }
        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {
          return 0;
        }
        if (iVar10 != 6) {
          return 5;
        }
        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);
        iVar9 = 6;
      }
      if ((byte)(bVar4 + 0x80) < 0x40) {
        return iVar9;
      }
    }
  }
  else if (*(int *)(str_idx + 0x50) != 1) {
    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);
    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {
      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {
        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;
        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);
        iVar9 = 1;
        do {
          iVar9 = iVar9 + 1;
          iVar7 = iVar10;
          if (iVar9 == iVar10) break;
          iVar7 = iVar9;
        } while (pwVar2[iVar9] == 0xffffffff);
        if (cVar3 == '\x05') {
          if (((*(uint *)node_idx & 0x40) == 0) &&
             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {
            return 0;
          }
          if ((*(uint *)node_idx & 0x80) == 0) {
            return iVar7;
          }
          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);
        }
        else {
          if (cVar3 != '\x06') {
            return 0;
          }
          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];
          iVar9 = puVar5[8];
          iVar10 = puVar5[5];
          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {
            __wc = *pwVar2;
            if (0 < iVar10) {
              if (__wc != *(wint_t *)*puVar5) {
                iVar8 = 0;
                do {
                  iVar8 = iVar8 + 1;
                  if (iVar8 == iVar10) goto LAB_0001f3cc;
                } while (__wc != ((wint_t *)*puVar5)[iVar8]);
              }
LAB_0001f412:
              if ((*(byte *)(puVar5 + 4) & 1) != 0) {
                return 0;
              }
              return iVar7;
            }
LAB_0001f3cc:
            if (0 < (int)puVar5[9]) {
              iVar9 = 0;
              do {
                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));
                if (iVar10 != 0) goto LAB_0001f412;
                iVar9 = iVar9 + 1;
              } while (iVar9 < (int)puVar5[9]);
              iVar9 = puVar5[8];
            }
            if (0 < iVar9) {
              iVar10 = 0;
              do {
                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&
                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;
                iVar10 = iVar10 + 1;
              } while (iVar10 != iVar9);
            }
          }
          bVar6 = *(byte *)(puVar5 + 4) & 1;
        }
        if (bVar6 != 0) {
          return iVar7;
        }
      }
    }
  }
  return 0;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

int __regparm3 FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  wint_t *pwVar2;
  char cVar3;
  byte bVar4;
  wint_t __wc;
  byte bVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  
  puVar1 = (undefined4 *)(param_1 + param_3 * 8);
  cVar3 = *(char *)(puVar1 + 1);
  if (cVar3 == '\a') {
    iVar8 = *(int *)(param_4 + 4);
    bVar5 = *(byte *)(iVar8 + param_5);
    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {
      bVar4 = *(byte *)(iVar8 + 1 + param_5);
      if (bVar5 < 0xe0) {
        iVar8 = 2;
      }
      else {
        if (bVar5 < 0xf0) {
          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {
            return 0;
          }
          iVar9 = 3;
        }
        else if (bVar5 < 0xf8) {
          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {
            return 0;
          }
          iVar9 = 4;
        }
        else if (bVar5 < 0xfc) {
          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {
            return 0;
          }
          iVar9 = 5;
        }
        else {
          if (0xfd < bVar5) {
            return 0;
          }
          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {
            return 0;
          }
          iVar9 = 6;
        }
        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {
          return 0;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {
          return 0;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {
          return 0;
        }
        if (iVar9 == 3) {
          return 3;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {
          return 0;
        }
        if (iVar9 == 4) {
          return 4;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {
          return 0;
        }
        if (iVar9 != 6) {
          return 5;
        }
        bVar4 = *(byte *)(iVar8 + 5 + param_5);
        iVar8 = 6;
      }
      if ((byte)(bVar4 + 0x80) < 0x40) {
        return iVar8;
      }
    }
  }
  else if (*(int *)(param_4 + 0x50) != 1) {
    iVar8 = param_5 + 1;
    if (iVar8 < *(int *)(param_4 + 0x1c)) {
      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {
        iVar9 = *(int *)(param_4 + 0x1c) - param_5;
        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);
        iVar8 = 1;
        do {
          iVar8 = iVar8 + 1;
          iVar6 = iVar9;
          if (iVar8 == iVar9) break;
          iVar6 = iVar8;
        } while (pwVar2[iVar8] == 0xffffffff);
        if (cVar3 == '\x05') {
          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {
            return 0;
          }
          if ((*param_2 & 0x80) == 0) {
            return iVar6;
          }
          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);
        }
        else {
          if (cVar3 != '\x06') {
            return 0;
          }
          puVar1 = (undefined4 *)*puVar1;
          iVar8 = puVar1[8];
          iVar9 = puVar1[5];
          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {
            __wc = *pwVar2;
            if (0 < iVar9) {
              if (__wc != *(wint_t *)*puVar1) {
                iVar7 = 0;
                do {
                  iVar7 = iVar7 + 1;
                  if (iVar7 == iVar9) goto LAB_0001f3cc;
                } while (__wc != ((wint_t *)*puVar1)[iVar7]);
              }
LAB_0001f412:
              if ((*(byte *)(puVar1 + 4) & 1) != 0) {
                return 0;
              }
              return iVar6;
            }
LAB_0001f3cc:
            if (0 < (int)puVar1[9]) {
              iVar8 = 0;
              do {
                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));
                if (iVar9 != 0) goto LAB_0001f412;
                iVar8 = iVar8 + 1;
              } while (iVar8 < (int)puVar1[9]);
              iVar8 = puVar1[8];
            }
            if (0 < iVar8) {
              iVar9 = 0;
              do {
                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&
                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;
                iVar9 = iVar9 + 1;
              } while (iVar9 != iVar8);
            }
          }
          bVar5 = *(byte *)(puVar1 + 4) & 1;
        }
        if (bVar5 != 0) {
          return iVar6;
        }
      }
    }
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000138d0
ADD EBX,0x18d27
SUB ESP,0x1c
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x8],EBX
LEA EBX,[EAX + ECX*0x8]
MOVZX EAX,byte ptr [EBX + 0x4]
CMP AL,0x7
JZ 0x0001f428
CMP dword ptr [EDX + 0x50],0x1
JZ 0x0001f345
MOV ESI,dword ptr [ESP + 0x34]
LEA ECX,[ESI + 0x1]
MOV ESI,dword ptr [EDX + 0x1c]
CMP ECX,ESI
JGE 0x0001f345
MOV EDI,dword ptr [EDX + 0x8]
LEA EBP,[ECX*0x4 + 0x0]
CMP dword ptr [EDI + ECX*0x4],-0x1
JNZ 0x0001f345
SUB ESI,dword ptr [ESP + 0x34]
LEA EDI,[EDI + EBP*0x1 + -0x4]
MOV ECX,0x1
JMP 0x0001f336
CMP dword ptr [EDI + ECX*0x4],-0x1
JNZ 0x0001f388
ADD ECX,0x1
CMP ECX,ESI
JNZ 0x0001f330
CMP AL,0x5
JZ 0x0001f358
CMP AL,0x6
JZ 0x0001f390
XOR ESI,ESI
ADD ESP,0x1c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
TEST AL,0x40
JNZ 0x0001f36f
MOV ECX,dword ptr [EDX + 0x4]
MOV EBX,dword ptr [ESP + 0x34]
CMP byte ptr [ECX + EBX*0x1],0xa
JZ 0x0001f345
TEST AL,0x80
JZ 0x0001f347
MOV EAX,dword ptr [EDX + 0x4]
MOV EBX,dword ptr [ESP + 0x34]
CMP byte ptr [EAX + EBX*0x1],0x0
JZ 0x0001f345
JMP 0x0001f347
MOV ESI,ECX
CMP AL,0x5
JNZ 0x0001f341
JMP 0x0001f358
MOV EBP,dword ptr [EBX]
MOV ECX,dword ptr [EBP + 0x20]
MOV EDX,dword ptr [EBP + 0x14]
TEST ECX,ECX
JNZ 0x0001f3a7
MOV EAX,EDX
OR EAX,dword ptr [EBP + 0x24]
JZ 0x0001f550
MOV EDI,dword ptr [EDI]
TEST EDX,EDX
JLE 0x0001f3cc
MOV EBX,dword ptr [EBP]
CMP EDI,dword ptr [EBX]
JZ 0x0001f412
XOR EAX,EAX
JMP 0x0001f3c5
CMP EDI,dword ptr [EBX + EAX*0x4]
JZ 0x0001f412
ADD EAX,0x1
CMP EAX,EDX
JNZ 0x0001f3c0
MOV EAX,dword ptr [EBP + 0x24]
TEST EAX,EAX
JLE 0x0001f529
XOR EDX,EDX
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,EDI
MOV EDI,EDX
JMP 0x0001f3f4
ADD EDI,0x1
CMP EDI,dword ptr [EBP + 0x24]
JGE 0x0001f520
MOV EAX,dword ptr [EBP + 0xc]
SUB ESP,0x8
PUSH dword ptr [EAX + EDI*0x4]
PUSH ESI
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00012230
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001f3e8
MOV ESI,dword ptr [ESP + 0xc]
TEST byte ptr [EBP + 0x10],0x1
JZ 0x0001f347
JMP 0x0001f345
MOV ECX,dword ptr [EDX + 0x4]
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [ECX + EAX*0x1]
CMP AL,0xc1
JBE 0x0001f345
MOV EBX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EDX + 0x30]
ADD EBX,0x1
CMP EBX,EDX
JGE 0x0001f345
MOV EBX,dword ptr [ESP + 0x34]
MOVZX EBX,byte ptr [ECX + EBX*0x1 + 0x1]
CMP AL,0xdf
JBE 0x0001f57b
CMP AL,0xef
JA 0x0001f560
CMP AL,0xe0
JNZ 0x0001f473
CMP BL,0x9f
JBE 0x0001f345
MOV ESI,0x3
MOV EAX,dword ptr [ESP + 0x34]
ADD EAX,ESI
CMP EDX,EAX
JL 0x0001f345
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + 0x1]
MOV byte ptr [ESP + 0x8],AL
ADD EAX,-0x80
CMP AL,0x3f
JA 0x0001f345
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + 0x2]
MOV byte ptr [ESP + 0x8],AL
ADD EAX,-0x80
CMP AL,0x3f
JA 0x0001f345
CMP ESI,0x3
JZ 0x0001f347
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + 0x3]
MOV byte ptr [ESP + 0x8],AL
ADD EAX,-0x80
CMP AL,0x3f
JA 0x0001f345
CMP ESI,0x4
JZ 0x0001f347
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + 0x4]
MOV byte ptr [ESP + 0x8],AL
ADD EAX,-0x80
CMP AL,0x3f
JA 0x0001f345
CMP ESI,0x6
JNZ 0x0001f5cb
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + 0x5]
ADD EAX,-0x80
CMP AL,0x3f
JBE 0x0001f347
JMP 0x0001f345
MOV EDI,ESI
MOV ECX,dword ptr [EBP + 0x20]
MOV ESI,dword ptr [ESP + 0xc]
TEST ECX,ECX
JLE 0x0001f550
MOV EDX,dword ptr [EBP + 0x4]
XOR EAX,EAX
LEA ESI,[ESI]
CMP EDI,dword ptr [EDX + EAX*0x4]
JL 0x0001f549
MOV EBX,dword ptr [EBP + 0x8]
CMP EDI,dword ptr [EBX + EAX*0x4]
JLE 0x0001f412
ADD EAX,0x1
CMP EAX,ECX
JNZ 0x0001f538
TEST byte ptr [EBP + 0x10],0x1
JNZ 0x0001f347
JMP 0x0001f345
CMP AL,0xf7
JA 0x0001f591
CMP AL,0xf0
JNZ 0x0001f571
CMP BL,0x8f
JBE 0x0001f345
MOV ESI,0x4
JMP 0x0001f478
ADD EBX,-0x80
MOV ESI,0x2
CMP BL,0x3f
JBE 0x0001f347
JMP 0x0001f345
CMP AL,0xfb
JA 0x0001f5ac
CMP AL,0xf8
JNZ 0x0001f5a2
CMP BL,0x87
JBE 0x0001f345
MOV ESI,0x5
JMP 0x0001f478
CMP AL,0xfd
JA 0x0001f345
CMP AL,0xfc
JNZ 0x0001f5c1
CMP BL,0x83
JBE 0x0001f345
MOV ESI,0x6
JMP 0x0001f478
MOV ESI,0x5
JMP 0x0001f347
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n\nint __regparm3 FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" comment comment (function_definition "int __regparm3 FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(int param_1,uint *param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * 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  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "wint_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type 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 "cVar3 = *(char *)(puVar1 + 1);" (assignment_expression "cVar3 = *(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 (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(cVar3 == '\a')" ( (binary_expression "cVar3 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }" { (expression_statement "iVar8 = *(int *)(param_4 + 4);" (assignment_expression "iVar8 = *(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 "bVar5 = *(byte *)(iVar8 + param_5);" (assignment_expression "bVar5 = *(byte *)(iVar8 + param_5)" identifier = (pointer_expression "*(byte *)(iVar8 + param_5)" * (cast_expression "(byte *)(iVar8 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + param_5)" ( (binary_expression "iVar8 + param_5" identifier + identifier) ))))) ;) (if_statement "if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }" if (parenthesized_expression "((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30)))" ( (binary_expression "(0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))" (parenthesized_expression "(0xc1 < bVar5)" ( (binary_expression "0xc1 < bVar5" 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      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }" { (expression_statement "bVar4 = *(byte *)(iVar8 + 1 + param_5);" (assignment_expression "bVar4 = *(byte *)(iVar8 + 1 + param_5)" identifier = (pointer_expression "*(byte *)(iVar8 + 1 + param_5)" * (cast_expression "(byte *)(iVar8 + 1 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 1 + param_5)" ( (binary_expression "iVar8 + 1 + param_5" (binary_expression "iVar8 + 1" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" if (parenthesized_expression "(bVar5 < 0xe0)" ( (binary_expression "bVar5 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        iVar8 = 2;\n      }" { (expression_statement "iVar8 = 2;" (assignment_expression "iVar8 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" else (compound_statement "{\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" { (if_statement "if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" if (parenthesized_expression "(bVar5 < 0xf0)" ( (binary_expression "bVar5 < 0xf0" identifier < number_literal) )) (compound_statement "{\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }" { (if_statement "if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xe0) && (bVar4 < 0xa0))" ( (binary_expression "(bVar5 == 0xe0) && (bVar4 < 0xa0)" (parenthesized_expression "(bVar5 == 0xe0)" ( (binary_expression "bVar5 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0xa0)" ( (binary_expression "bVar4 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" identifier = number_literal) ;) }) (else_clause "else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" else (if_statement "if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" if (parenthesized_expression "(bVar5 < 0xf8)" ( (binary_expression "bVar5 < 0xf8" identifier < number_literal) )) (compound_statement "{\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }" { (if_statement "if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xf0) && (bVar4 < 0x90))" ( (binary_expression "(bVar5 == 0xf0) && (bVar4 < 0x90)" (parenthesized_expression "(bVar5 == 0xf0)" ( (binary_expression "bVar5 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x90)" ( (binary_expression "bVar4 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 4;" (assignment_expression "iVar9 = 4" identifier = number_literal) ;) }) (else_clause "else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" else (if_statement "if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" if (parenthesized_expression "(bVar5 < 0xfc)" ( (binary_expression "bVar5 < 0xfc" identifier < number_literal) )) (compound_statement "{\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }" { (if_statement "if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xf8) && (bVar4 < 0x88))" ( (binary_expression "(bVar5 == 0xf8) && (bVar4 < 0x88)" (parenthesized_expression "(bVar5 == 0xf8)" ( (binary_expression "bVar5 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x88)" ( (binary_expression "bVar4 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 5;" (assignment_expression "iVar9 = 5" identifier = number_literal) ;) }) (else_clause "else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" else (compound_statement "{\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" { (if_statement "if (0xfd < bVar5) {\n            return 0;\n          }" if (parenthesized_expression "(0xfd < bVar5)" ( (binary_expression "0xfd < bVar5" number_literal < identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xfc) && (bVar4 < 0x84))" ( (binary_expression "(bVar5 == 0xfc) && (bVar4 < 0x84)" (parenthesized_expression "(bVar5 == 0xfc)" ( (binary_expression "bVar5 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x84)" ( (binary_expression "bVar4 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 6;" (assignment_expression "iVar9 = 6" identifier = number_literal) ;) }))))))) (if_statement "if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }" if (parenthesized_expression "(*(int *)(param_4 + 0x30) < param_5 + iVar9)" ( (binary_expression "*(int *)(param_4 + 0x30) < param_5 + iVar9" (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) )))) < (binary_expression "param_5 + iVar9" identifier + identifier)) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 1 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 1 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 1 + param_5)" * (cast_expression "(char *)(iVar8 + 1 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 1 + param_5)" ( (binary_expression "iVar8 + 1 + param_5" (binary_expression "iVar8 + 1" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 2 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 2 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 2 + param_5)" * (cast_expression "(char *)(iVar8 + 2 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 2 + param_5)" ( (binary_expression "iVar8 + 2 + param_5" (binary_expression "iVar8 + 2" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 == 3) {\n          return 3;\n        }" if (parenthesized_expression "(iVar9 == 3)" ( (binary_expression "iVar9 == 3" identifier == number_literal) )) (compound_statement "{\n          return 3;\n        }" { (return_statement "return 3;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 3 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 3 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 3 + param_5)" * (cast_expression "(char *)(iVar8 + 3 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 3 + param_5)" ( (binary_expression "iVar8 + 3 + param_5" (binary_expression "iVar8 + 3" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 == 4) {\n          return 4;\n        }" if (parenthesized_expression "(iVar9 == 4)" ( (binary_expression "iVar9 == 4" identifier == number_literal) )) (compound_statement "{\n          return 4;\n        }" { (return_statement "return 4;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 4 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 4 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 4 + param_5)" * (cast_expression "(char *)(iVar8 + 4 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4 + param_5)" ( (binary_expression "iVar8 + 4 + param_5" (binary_expression "iVar8 + 4" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 != 6) {\n          return 5;\n        }" if (parenthesized_expression "(iVar9 != 6)" ( (binary_expression "iVar9 != 6" identifier != number_literal) )) (compound_statement "{\n          return 5;\n        }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "bVar4 = *(byte *)(iVar8 + 5 + param_5);" (assignment_expression "bVar4 = *(byte *)(iVar8 + 5 + param_5)" identifier = (pointer_expression "*(byte *)(iVar8 + 5 + param_5)" * (cast_expression "(byte *)(iVar8 + 5 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 5 + param_5)" ( (binary_expression "iVar8 + 5 + param_5" (binary_expression "iVar8 + 5" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) }))) (if_statement "if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }" if (parenthesized_expression "((byte)(bVar4 + 0x80) < 0x40)" ( (binary_expression "(byte)(bVar4 + 0x80) < 0x40" (call_expression "(byte)(bVar4 + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar4 + 0x80)" ( (binary_expression "bVar4 + 0x80" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n        return iVar8;\n      }" { (return_statement "return iVar8;" return identifier ;) })) })) }) (else_clause "else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" else (if_statement "if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\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    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" { (expression_statement "iVar8 = param_5 + 1;" (assignment_expression "iVar8 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }" if (parenthesized_expression "(iVar8 < *(int *)(param_4 + 0x1c))" ( (binary_expression "iVar8 < *(int *)(param_4 + 0x1c)" identifier < (pointer_expression "*(int *)(param_4 + 0x1c)" * (cast_expression "(int *)(param_4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x1c)" ( (binary_expression "param_4 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }" { (if_statement "if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }" if (parenthesized_expression "(*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1)" ( (binary_expression "*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1" (pointer_expression "*(int *)(*(int *)(param_4 + 8) + iVar8 * 4)" * (cast_expression "(int *)(*(int *)(param_4 + 8) + iVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 8) + iVar8 * 4)" ( (binary_expression "*(int *)(param_4 + 8) + iVar8 * 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 "iVar8 * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }" { (expression_statement "iVar9 = *(int *)(param_4 + 0x1c) - param_5;" (assignment_expression "iVar9 = *(int *)(param_4 + 0x1c) - param_5" identifier = (binary_expression "*(int *)(param_4 + 0x1c) - param_5" (pointer_expression "*(int *)(param_4 + 0x1c)" * (cast_expression "(int *)(param_4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x1c)" ( (binary_expression "param_4 + 0x1c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);" (assignment_expression "pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" identifier = (cast_expression "(wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" ( (binary_expression "*(int *)(param_4 + 8) + -4 + iVar8 * 4" (binary_expression "*(int *)(param_4 + 8) + -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) )))) + number_literal) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (do_statement "do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);" do (compound_statement "{\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar9;" (assignment_expression "iVar6 = iVar9" identifier = identifier) ;) (if_statement "if (iVar8 == iVar9) break;" if (parenthesized_expression "(iVar8 == iVar9)" ( (binary_expression "iVar8 == iVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar2[iVar8] == 0xffffffff)" ( (binary_expression "pwVar2[iVar8] == 0xffffffff" (subscript_expression "pwVar2[iVar8]" identifier [ identifier ]) == number_literal) )) ;) (if_statement "if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" if (parenthesized_expression "(cVar3 == '\x05')" ( (binary_expression "cVar3 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }" { (if_statement "if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }" if (parenthesized_expression "(((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'))" ( (binary_expression "((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (parenthesized_expression "((*param_2 & 0x40) == 0)" ( (binary_expression "(*param_2 & 0x40) == 0" (parenthesized_expression "(*param_2 & 0x40)" ( (binary_expression "*param_2 & 0x40" (pointer_expression "*param_2" * 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 ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }" if (parenthesized_expression "((*param_2 & 0x80) == 0)" ( (binary_expression "(*param_2 & 0x80) == 0" (parenthesized_expression "(*param_2 & 0x80)" ( (binary_expression "*param_2 & 0x80" (pointer_expression "*param_2" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            return iVar6;\n          }" { (return_statement "return iVar6;" return identifier ;) })) (expression_statement "bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);" (assignment_expression "bVar5 = *(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 (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" else (compound_statement "{\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" { (if_statement "if (cVar3 != '\x06') {\n            return 0;\n          }" if (parenthesized_expression "(cVar3 != '\x06')" ( (binary_expression "cVar3 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (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 "iVar8 = puVar1[8];" (assignment_expression "iVar8 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = puVar1[5];" (assignment_expression "iVar9 = puVar1[5]" identifier = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }" if (parenthesized_expression "((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0))" ( (binary_expression "(iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar9 != 0 || puVar1[9] != 0)" ( (binary_expression "iVar9 != 0 || puVar1[9] != 0" (binary_expression "iVar9 != 0" identifier != number_literal) || (binary_expression "puVar1[9] != 0" (subscript_expression "puVar1[9]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }" { (expression_statement "__wc = *pwVar2;" (assignment_expression "__wc = *pwVar2" identifier = (pointer_expression "*pwVar2" * identifier)) ;) (if_statement "if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }" { (if_statement "if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\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                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);" do (compound_statement "{\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == iVar9) goto LAB_0001f3cc;" if (parenthesized_expression "(iVar7 == iVar9)" ( (binary_expression "iVar7 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_0001f3cc;" goto statement_identifier ;)) }) while (parenthesized_expression "(__wc != ((wint_t *)*puVar1)[iVar7])" ( (binary_expression "__wc != ((wint_t *)*puVar1)[iVar7]" identifier != (subscript_expression "((wint_t *)*puVar1)[iVar7]" (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_0001f412:\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 iVar6;" return identifier ;) })) (labeled_statement "LAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }" statement_identifier : (if_statement "if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = 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              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);" do (compound_statement "{\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              }" { (expression_statement "iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));" (assignment_expression "iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" identifier = (call_expression "iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" identifier (argument_list "(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" ( identifier , (pointer_expression "*(wctype_t *)(puVar1[3] + iVar8 * 4)" * (cast_expression "(wctype_t *)(puVar1[3] + iVar8 * 4)" ( (type_descriptor "wctype_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[3] + iVar8 * 4)" ( (binary_expression "puVar1[3] + iVar8 * 4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar9 != 0) goto LAB_0001f412;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001f412;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 < (int)puVar1[9])" ( (binary_expression "iVar8 < (int)puVar1[9]" identifier < (cast_expression "(int)puVar1[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[9]" identifier [ number_literal ]))) )) ;) (expression_statement "iVar8 = puVar1[8];" (assignment_expression "iVar8 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);" do (compound_statement "{\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              }" { (if_statement "if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;" if (parenthesized_expression "((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4)))" ( (binary_expression "(*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))" (parenthesized_expression "(*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc)" ( (binary_expression "*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar1[1] + iVar9 * 4)" * (cast_expression "(int *)(puVar1[1] + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[1] + iVar9 * 4)" ( (binary_expression "puVar1[1] + iVar9 * 4" (subscript_expression "puVar1[1]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) <= (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))" ( (binary_expression "(int)__wc <= *(int *)(puVar1[2] + iVar9 * 4)" (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(puVar1[2] + iVar9 * 4)" * (cast_expression "(int *)(puVar1[2] + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[2] + iVar9 * 4)" ( (binary_expression "puVar1[2] + iVar9 * 4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ))) )) (goto_statement "goto LAB_0001f412;" 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 != iVar8)" ( (binary_expression "iVar9 != iVar8" identifier != identifier) )) ;) })) })) (expression_statement "bVar5 = *(byte *)(puVar1 + 4) & 1;" (assignment_expression "bVar5 = *(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 (bVar5 != 0) {\n          return iVar6;\n        }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          return iVar6;\n        }" { (return_statement "return iVar6;" return identifier ;) })) })) })) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n/* 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  undefined1 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  undefined4 *puVar5;\n  wint_t __wc;\n  byte bVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  \n  cVar3 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];\n  if (cVar3 == '\a') {\n    iVar9 = *(int *)(str_idx + 4);\n    bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);\n    if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" comment comment 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  undefined1 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  undefined4 *puVar5;\n  wint_t __wc;\n  byte bVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  \n  cVar3 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];\n  if (cVar3 == '\a') {\n    iVar9 = *(int *)(str_idx + 4);\n    bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);\n    if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\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  undefined1 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  undefined4 *puVar5;\n  wint_t __wc;\n  byte bVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  \n  cVar3 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];\n  if (cVar3 == '\a') {\n    iVar9 = *(int *)(str_idx + 4);\n    bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);\n    if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "wint_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "cVar3 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];" (assignment_expression "cVar3 = (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 (cVar3 == '\a') {\n    iVar9 = *(int *)(str_idx + 4);\n    bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);\n    if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }\n  }\n  else if (*(int *)(str_idx + 0x50) != 1) {\n    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(cVar3 == '\a')" ( (binary_expression "cVar3 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = *(int *)(str_idx + 4);\n    bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);\n    if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }\n  }" { (expression_statement "iVar9 = *(int *)(str_idx + 4);" (assignment_expression "iVar9 = *(int *)(str_idx + 4)" 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) ))))) ;) (expression_statement "bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60);" (assignment_expression "bVar6 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x60)" identifier = (pointer_expression "*(byte *)((int)dfa_1->word_char + iVar9 + -0x60)" * (cast_expression "(byte *)((int)dfa_1->word_char + iVar9 + -0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x60)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x60" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) ))))) ;) (if_statement "if ((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))) {\n      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }" if (parenthesized_expression "((0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30)))" ( (binary_expression "(0xc1 < bVar6) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(str_idx + 0x30))" (parenthesized_expression "(0xc1 < bVar6)" ( (binary_expression "0xc1 < bVar6" 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      bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);\n      if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }\n    }" { (expression_statement "bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f);" (assignment_expression "bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5f)" identifier = (pointer_expression "*(byte *)((int)dfa_1->word_char + iVar9 + -0x5f)" * (cast_expression "(byte *)((int)dfa_1->word_char + iVar9 + -0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x5f)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x5f" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) ))))) ;) (if_statement "if (bVar6 < 0xe0) {\n        iVar9 = 2;\n      }\n      else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }" if (parenthesized_expression "(bVar6 < 0xe0)" ( (binary_expression "bVar6 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        iVar9 = 2;\n      }" { (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }" else (compound_statement "{\n        if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }\n        if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }\n        if (iVar10 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);\n        iVar9 = 6;\n      }" { (if_statement "if (bVar6 < 0xf0) {\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }\n        else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" if (parenthesized_expression "(bVar6 < 0xf0)" ( (binary_expression "bVar6 < 0xf0" identifier < number_literal) )) (compound_statement "{\n          if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar10 = 3;\n        }" { (if_statement "if ((bVar6 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar6 == 0xe0) && (bVar4 < 0xa0))" ( (binary_expression "(bVar6 == 0xe0) && (bVar4 < 0xa0)" (parenthesized_expression "(bVar6 == 0xe0)" ( (binary_expression "bVar6 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0xa0)" ( (binary_expression "bVar4 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" identifier = number_literal) ;) }) (else_clause "else if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" else (if_statement "if (bVar6 < 0xf8) {\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }\n        else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" if (parenthesized_expression "(bVar6 < 0xf8)" ( (binary_expression "bVar6 < 0xf8" identifier < number_literal) )) (compound_statement "{\n          if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar10 = 4;\n        }" { (if_statement "if ((bVar6 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar6 == 0xf0) && (bVar4 < 0x90))" ( (binary_expression "(bVar6 == 0xf0) && (bVar4 < 0x90)" (parenthesized_expression "(bVar6 == 0xf0)" ( (binary_expression "bVar6 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x90)" ( (binary_expression "bVar4 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar10 = 4;" (assignment_expression "iVar10 = 4" identifier = number_literal) ;) }) (else_clause "else if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" else (if_statement "if (bVar6 < 0xfc) {\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }\n        else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" if (parenthesized_expression "(bVar6 < 0xfc)" ( (binary_expression "bVar6 < 0xfc" identifier < number_literal) )) (compound_statement "{\n          if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar10 = 5;\n        }" { (if_statement "if ((bVar6 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar6 == 0xf8) && (bVar4 < 0x88))" ( (binary_expression "(bVar6 == 0xf8) && (bVar4 < 0x88)" (parenthesized_expression "(bVar6 == 0xf8)" ( (binary_expression "bVar6 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x88)" ( (binary_expression "bVar4 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" identifier = number_literal) ;) }) (else_clause "else {\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" else (compound_statement "{\n          if (0xfd < bVar6) {\n            return 0;\n          }\n          if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar10 = 6;\n        }" { (if_statement "if (0xfd < bVar6) {\n            return 0;\n          }" if (parenthesized_expression "(0xfd < bVar6)" ( (binary_expression "0xfd < bVar6" number_literal < identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bVar6 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar6 == 0xfc) && (bVar4 < 0x84))" ( (binary_expression "(bVar6 == 0xfc) && (bVar4 < 0x84)" (parenthesized_expression "(bVar6 == 0xfc)" ( (binary_expression "bVar6 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x84)" ( (binary_expression "bVar4 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar10 = 6;" (assignment_expression "iVar10 = 6" identifier = number_literal) ;) }))))))) (if_statement "if (*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60) {\n          return 0;\n        }" if (parenthesized_expression "(*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60)" ( (binary_expression "*(int *)(str_idx + 0x30) < (int)dfa_1->word_char + iVar10 + -0x60" (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) )))) < (binary_expression "(int)dfa_1->word_char + iVar10 + -0x60" (binary_expression "(int)dfa_1->word_char + iVar10" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal)) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U)" ( (binary_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5f) + 0x80U" (pointer_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5f)" * (cast_expression "(char *)((int)dfa_1->word_char + iVar9 + -0x5f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x5f)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x5f" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U)" ( (binary_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5e) + 0x80U" (pointer_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5e)" * (cast_expression "(char *)((int)dfa_1->word_char + iVar9 + -0x5e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x5e)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x5e" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar10 == 3) {\n          return 3;\n        }" if (parenthesized_expression "(iVar10 == 3)" ( (binary_expression "iVar10 == 3" identifier == number_literal) )) (compound_statement "{\n          return 3;\n        }" { (return_statement "return 3;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U)" ( (binary_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5d) + 0x80U" (pointer_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5d)" * (cast_expression "(char *)((int)dfa_1->word_char + iVar9 + -0x5d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x5d)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x5d" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar10 == 4) {\n          return 4;\n        }" if (parenthesized_expression "(iVar10 == 4)" ( (binary_expression "iVar10 == 4" identifier == number_literal) )) (compound_statement "{\n          return 4;\n        }" { (return_statement "return 4;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U)" ( (binary_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5c) + 0x80U" (pointer_expression "*(char *)((int)dfa_1->word_char + iVar9 + -0x5c)" * (cast_expression "(char *)((int)dfa_1->word_char + iVar9 + -0x5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x5c)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x5c" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar10 != 6) {\n          return 5;\n        }" if (parenthesized_expression "(iVar10 != 6)" ( (binary_expression "iVar10 != 6" identifier != number_literal) )) (compound_statement "{\n          return 5;\n        }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b);" (assignment_expression "bVar4 = *(byte *)((int)dfa_1->word_char + iVar9 + -0x5b)" identifier = (pointer_expression "*(byte *)((int)dfa_1->word_char + iVar9 + -0x5b)" * (cast_expression "(byte *)((int)dfa_1->word_char + iVar9 + -0x5b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa_1->word_char + iVar9 + -0x5b)" ( (binary_expression "(int)dfa_1->word_char + iVar9 + -0x5b" (binary_expression "(int)dfa_1->word_char + iVar9" (cast_expression "(int)dfa_1->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa_1->word_char" identifier -> field_identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = 6;" (assignment_expression "iVar9 = 6" identifier = number_literal) ;) }))) (if_statement "if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar9;\n      }" if (parenthesized_expression "((byte)(bVar4 + 0x80) < 0x40)" ( (binary_expression "(byte)(bVar4 + 0x80) < 0x40" (call_expression "(byte)(bVar4 + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar4 + 0x80)" ( (binary_expression "bVar4 + 0x80" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n        return iVar9;\n      }" { (return_statement "return iVar9;" return identifier ;) })) })) }) (else_clause "else if (*(int *)(str_idx + 0x50) != 1) {\n    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }\n  }" else (if_statement "if (*(int *)(str_idx + 0x50) != 1) {\n    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\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    puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);\n    if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }\n  }" { (expression_statement "puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1);" (assignment_expression "puVar1 = (undefined1 *)((int)&dfa_1->nodes + 1)" identifier = (cast_expression "(undefined1 *)((int)&dfa_1->nodes + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (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) )))) ;) (if_statement "if ((int)puVar1 < *(int *)(str_idx + 0x1c)) {\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }" if (parenthesized_expression "((int)puVar1 < *(int *)(str_idx + 0x1c))" ( (binary_expression "(int)puVar1 < *(int *)(str_idx + 0x1c)" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(str_idx + 0x1c)" * (cast_expression "(int *)(str_idx + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 0x1c)" ( (binary_expression "str_idx + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }\n    }" { (if_statement "if (*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1) {\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }" if (parenthesized_expression "(*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1)" ( (binary_expression "*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4) == -1" (pointer_expression "*(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4)" * (cast_expression "(int *)(*(int *)(str_idx + 8) + (int)puVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(str_idx + 8) + (int)puVar1 * 4)" ( (binary_expression "*(int *)(str_idx + 8) + (int)puVar1 * 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)puVar1 * 4" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) == number_literal) )) (compound_statement "{\n        iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;\n        pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);\n        iVar9 = 1;\n        do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }\n        if (bVar6 != 0) {\n          return iVar7;\n        }\n      }" { (expression_statement "iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1;" (assignment_expression "iVar10 = *(int *)(str_idx + 0x1c) - (int)dfa_1" identifier = (binary_expression "*(int *)(str_idx + 0x1c) - (int)dfa_1" (pointer_expression "*(int *)(str_idx + 0x1c)" * (cast_expression "(int *)(str_idx + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(str_idx + 0x1c)" ( (binary_expression "str_idx + 0x1c" identifier + number_literal) )))) - (cast_expression "(int)dfa_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4);" (assignment_expression "pwVar2 = (wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4)" identifier = (cast_expression "(wint_t *)(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4)" ( (binary_expression "*(int *)(str_idx + 8) + -4 + (int)puVar1 * 4" (binary_expression "*(int *)(str_idx + 8) + -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) )))) + number_literal) + (binary_expression "(int)puVar1 * 4" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (do_statement "do {\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        } while (pwVar2[iVar9] == 0xffffffff);" do (compound_statement "{\n          iVar9 = iVar9 + 1;\n          iVar7 = iVar10;\n          if (iVar9 == iVar10) break;\n          iVar7 = iVar9;\n        }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar10;" (assignment_expression "iVar7 = iVar10" identifier = identifier) ;) (if_statement "if (iVar9 == iVar10) break;" if (parenthesized_expression "(iVar9 == iVar10)" ( (binary_expression "iVar9 == iVar10" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar9;" (assignment_expression "iVar7 = iVar9" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar2[iVar9] == 0xffffffff)" ( (binary_expression "pwVar2[iVar9] == 0xffffffff" (subscript_expression "pwVar2[iVar9]" identifier [ identifier ]) == number_literal) )) ;) (if_statement "if (cVar3 == '\x05') {\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }" if (parenthesized_expression "(cVar3 == '\x05')" ( (binary_expression "cVar3 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n          if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }\n          if ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }\n          bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);\n        }" { (if_statement "if (((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')) {\n            return 0;\n          }" if (parenthesized_expression "(((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n'))" ( (binary_expression "((*(uint *)node_idx & 0x40) == 0) &&\n             (*(char *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60) == '\n')" (parenthesized_expression "((*(uint *)node_idx & 0x40) == 0)" ( (binary_expression "(*(uint *)node_idx & 0x40) == 0" (parenthesized_expression "(*(uint *)node_idx & 0x40)" ( (binary_expression "*(uint *)node_idx & 0x40" (pointer_expression "*(uint *)node_idx" * (cast_expression "(uint *)node_idx" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 ((*(uint *)node_idx & 0x80) == 0) {\n            return iVar7;\n          }" if (parenthesized_expression "((*(uint *)node_idx & 0x80) == 0)" ( (binary_expression "(*(uint *)node_idx & 0x80) == 0" (parenthesized_expression "(*(uint *)node_idx & 0x80)" ( (binary_expression "*(uint *)node_idx & 0x80" (pointer_expression "*(uint *)node_idx" * (cast_expression "(uint *)node_idx" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n            return iVar7;\n          }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "bVar6 = *(byte *)((int)dfa_1->word_char + *(int *)(str_idx + 4) + -0x60);" (assignment_expression "bVar6 = *(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 (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }" else (compound_statement "{\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];\n          iVar9 = puVar5[8];\n          iVar10 = puVar5[5];\n          if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }\n          bVar6 = *(byte *)(puVar5 + 4) & 1;\n        }" { (if_statement "if (cVar3 != '\x06') {\n            return 0;\n          }" if (parenthesized_expression "(cVar3 != '\x06')" ( (binary_expression "cVar3 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar5 = (undefined4 *)dfa->word_char[(int)input * 2 + -0x18];" (assignment_expression "puVar5 = (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 = puVar5[8];" (assignment_expression "iVar9 = puVar5[8]" identifier = (subscript_expression "puVar5[8]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = puVar5[5];" (assignment_expression "iVar10 = puVar5[5]" identifier = (subscript_expression "puVar5[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }" if (parenthesized_expression "((iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0))" ( (binary_expression "(iVar9 != 0) || (iVar10 != 0 || puVar5[9] != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 != 0 || puVar5[9] != 0)" ( (binary_expression "iVar10 != 0 || puVar5[9] != 0" (binary_expression "iVar10 != 0" identifier != number_literal) || (binary_expression "puVar5[9] != 0" (subscript_expression "puVar5[9]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n            __wc = *pwVar2;\n            if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }\n            if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }\n          }" { (expression_statement "__wc = *pwVar2;" (assignment_expression "__wc = *pwVar2" identifier = (pointer_expression "*pwVar2" * identifier)) ;) (if_statement "if (0 < iVar10) {\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n              if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar7;\n            }" { (if_statement "if (__wc != *(wint_t *)*puVar5) {\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }" if (parenthesized_expression "(__wc != *(wint_t *)*puVar5)" ( (binary_expression "__wc != *(wint_t *)*puVar5" identifier != (pointer_expression "*(wint_t *)*puVar5" * (cast_expression "(wint_t *)*puVar5" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier)))) )) (compound_statement "{\n                iVar8 = 0;\n                do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);\n              }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar5)[iVar8]);" do (compound_statement "{\n                  iVar8 = iVar8 + 1;\n                  if (iVar8 == iVar10) goto LAB_0001f3cc;\n                }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar10) goto LAB_0001f3cc;" if (parenthesized_expression "(iVar8 == iVar10)" ( (binary_expression "iVar8 == iVar10" identifier == identifier) )) (goto_statement "goto LAB_0001f3cc;" goto statement_identifier ;)) }) while (parenthesized_expression "(__wc != ((wint_t *)*puVar5)[iVar8])" ( (binary_expression "__wc != ((wint_t *)*puVar5)[iVar8]" identifier != (subscript_expression "((wint_t *)*puVar5)[iVar8]" (parenthesized_expression "((wint_t *)*puVar5)" ( (cast_expression "(wint_t *)*puVar5" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier)) )) [ identifier ])) )) ;) })) (labeled_statement "LAB_0001f412:\n              if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }" statement_identifier : (if_statement "if ((*(byte *)(puVar5 + 4) & 1) != 0) {\n                return 0;\n              }" if (parenthesized_expression "((*(byte *)(puVar5 + 4) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar5 + 4) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar5 + 4) & 1)" ( (binary_expression "*(byte *)(puVar5 + 4) & 1" (pointer_expression "*(byte *)(puVar5 + 4)" * (cast_expression "(byte *)(puVar5 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) }))) (return_statement "return iVar7;" return identifier ;) })) (labeled_statement "LAB_0001f3cc:\n            if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }" statement_identifier : (if_statement "if (0 < (int)puVar5[9]) {\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }" if (parenthesized_expression "(0 < (int)puVar5[9])" ( (binary_expression "0 < (int)puVar5[9]" number_literal < (cast_expression "(int)puVar5[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar5[9]" identifier [ number_literal ]))) )) (compound_statement "{\n              iVar9 = 0;\n              do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);\n              iVar9 = puVar5[8];\n            }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 < (int)puVar5[9]);" do (compound_statement "{\n                iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));\n                if (iVar10 != 0) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              }" { (expression_statement "iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4));" (assignment_expression "iVar10 = iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4))" identifier = (call_expression "iswctype(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4))" identifier (argument_list "(__wc,*(wctype_t *)(puVar5[3] + iVar9 * 4))" ( identifier , (pointer_expression "*(wctype_t *)(puVar5[3] + iVar9 * 4)" * (cast_expression "(wctype_t *)(puVar5[3] + iVar9 * 4)" ( (type_descriptor "wctype_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5[3] + iVar9 * 4)" ( (binary_expression "puVar5[3] + iVar9 * 4" (subscript_expression "puVar5[3]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar10 != 0) goto LAB_0001f412;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001f412;" 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)puVar5[9])" ( (binary_expression "iVar9 < (int)puVar5[9]" identifier < (cast_expression "(int)puVar5[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar5[9]" identifier [ number_literal ]))) )) ;) (expression_statement "iVar9 = puVar5[8];" (assignment_expression "iVar9 = puVar5[8]" identifier = (subscript_expression "puVar5[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (0 < iVar9) {\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n              iVar10 = 0;\n              do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);\n            }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              } while (iVar10 != iVar9);" do (compound_statement "{\n                if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;\n                iVar10 = iVar10 + 1;\n              }" { (if_statement "if ((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))) goto LAB_0001f412;" if (parenthesized_expression "((*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4)))" ( (binary_expression "(*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))" (parenthesized_expression "(*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc)" ( (binary_expression "*(int *)(puVar5[1] + iVar10 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar5[1] + iVar10 * 4)" * (cast_expression "(int *)(puVar5[1] + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5[1] + iVar10 * 4)" ( (binary_expression "puVar5[1] + iVar10 * 4" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) <= (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)__wc <= *(int *)(puVar5[2] + iVar10 * 4))" ( (binary_expression "(int)__wc <= *(int *)(puVar5[2] + iVar10 * 4)" (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(puVar5[2] + iVar10 * 4)" * (cast_expression "(int *)(puVar5[2] + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5[2] + iVar10 * 4)" ( (binary_expression "puVar5[2] + iVar10 * 4" (subscript_expression "puVar5[2]" identifier [ number_literal ]) + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ))) )) (goto_statement "goto LAB_0001f412;" goto statement_identifier ;)) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != iVar9)" ( (binary_expression "iVar10 != iVar9" identifier != identifier) )) ;) })) })) (expression_statement "bVar6 = *(byte *)(puVar5 + 4) & 1;" (assignment_expression "bVar6 = *(byte *)(puVar5 + 4) & 1" identifier = (binary_expression "*(byte *)(puVar5 + 4) & 1" (pointer_expression "*(byte *)(puVar5 + 4)" * (cast_expression "(byte *)(puVar5 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) )))) & number_literal)) ;) }))) (if_statement "if (bVar6 != 0) {\n          return iVar7;\n        }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          return iVar7;\n        }" { (return_statement "return iVar7;" return identifier ;) })) })) })) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(int param_1,uint *param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * 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  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "wint_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type 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 "cVar3 = *(char *)(puVar1 + 1);" (assignment_expression "cVar3 = *(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 (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(cVar3 == '\a')" ( (binary_expression "cVar3 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }" { (expression_statement "iVar8 = *(int *)(param_4 + 4);" (assignment_expression "iVar8 = *(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 "bVar5 = *(byte *)(iVar8 + param_5);" (assignment_expression "bVar5 = *(byte *)(iVar8 + param_5)" identifier = (pointer_expression "*(byte *)(iVar8 + param_5)" * (cast_expression "(byte *)(iVar8 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + param_5)" ( (binary_expression "iVar8 + param_5" identifier + identifier) ))))) ;) (if_statement "if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }" if (parenthesized_expression "((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30)))" ( (binary_expression "(0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))" (parenthesized_expression "(0xc1 < bVar5)" ( (binary_expression "0xc1 < bVar5" 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      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }" { (expression_statement "bVar4 = *(byte *)(iVar8 + 1 + param_5);" (assignment_expression "bVar4 = *(byte *)(iVar8 + 1 + param_5)" identifier = (pointer_expression "*(byte *)(iVar8 + 1 + param_5)" * (cast_expression "(byte *)(iVar8 + 1 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 1 + param_5)" ( (binary_expression "iVar8 + 1 + param_5" (binary_expression "iVar8 + 1" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" if (parenthesized_expression "(bVar5 < 0xe0)" ( (binary_expression "bVar5 < 0xe0" identifier < number_literal) )) (compound_statement "{\n        iVar8 = 2;\n      }" { (expression_statement "iVar8 = 2;" (assignment_expression "iVar8 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" else (compound_statement "{\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" { (if_statement "if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" if (parenthesized_expression "(bVar5 < 0xf0)" ( (binary_expression "bVar5 < 0xf0" identifier < number_literal) )) (compound_statement "{\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }" { (if_statement "if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xe0) && (bVar4 < 0xa0))" ( (binary_expression "(bVar5 == 0xe0) && (bVar4 < 0xa0)" (parenthesized_expression "(bVar5 == 0xe0)" ( (binary_expression "bVar5 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0xa0)" ( (binary_expression "bVar4 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" identifier = number_literal) ;) }) (else_clause "else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" else (if_statement "if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" if (parenthesized_expression "(bVar5 < 0xf8)" ( (binary_expression "bVar5 < 0xf8" identifier < number_literal) )) (compound_statement "{\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }" { (if_statement "if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xf0) && (bVar4 < 0x90))" ( (binary_expression "(bVar5 == 0xf0) && (bVar4 < 0x90)" (parenthesized_expression "(bVar5 == 0xf0)" ( (binary_expression "bVar5 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x90)" ( (binary_expression "bVar4 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 4;" (assignment_expression "iVar9 = 4" identifier = number_literal) ;) }) (else_clause "else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" else (if_statement "if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" if (parenthesized_expression "(bVar5 < 0xfc)" ( (binary_expression "bVar5 < 0xfc" identifier < number_literal) )) (compound_statement "{\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }" { (if_statement "if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xf8) && (bVar4 < 0x88))" ( (binary_expression "(bVar5 == 0xf8) && (bVar4 < 0x88)" (parenthesized_expression "(bVar5 == 0xf8)" ( (binary_expression "bVar5 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x88)" ( (binary_expression "bVar4 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 5;" (assignment_expression "iVar9 = 5" identifier = number_literal) ;) }) (else_clause "else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" else (compound_statement "{\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" { (if_statement "if (0xfd < bVar5) {\n            return 0;\n          }" if (parenthesized_expression "(0xfd < bVar5)" ( (binary_expression "0xfd < bVar5" number_literal < identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }" if (parenthesized_expression "((bVar5 == 0xfc) && (bVar4 < 0x84))" ( (binary_expression "(bVar5 == 0xfc) && (bVar4 < 0x84)" (parenthesized_expression "(bVar5 == 0xfc)" ( (binary_expression "bVar5 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar4 < 0x84)" ( (binary_expression "bVar4 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 6;" (assignment_expression "iVar9 = 6" identifier = number_literal) ;) }))))))) (if_statement "if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }" if (parenthesized_expression "(*(int *)(param_4 + 0x30) < param_5 + iVar9)" ( (binary_expression "*(int *)(param_4 + 0x30) < param_5 + iVar9" (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) )))) < (binary_expression "param_5 + iVar9" identifier + identifier)) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 1 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 1 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 1 + param_5)" * (cast_expression "(char *)(iVar8 + 1 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 1 + param_5)" ( (binary_expression "iVar8 + 1 + param_5" (binary_expression "iVar8 + 1" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 2 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 2 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 2 + param_5)" * (cast_expression "(char *)(iVar8 + 2 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 2 + param_5)" ( (binary_expression "iVar8 + 2 + param_5" (binary_expression "iVar8 + 2" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 == 3) {\n          return 3;\n        }" if (parenthesized_expression "(iVar9 == 3)" ( (binary_expression "iVar9 == 3" identifier == number_literal) )) (compound_statement "{\n          return 3;\n        }" { (return_statement "return 3;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 3 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 3 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 3 + param_5)" * (cast_expression "(char *)(iVar8 + 3 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 3 + param_5)" ( (binary_expression "iVar8 + 3 + param_5" (binary_expression "iVar8 + 3" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 == 4) {\n          return 4;\n        }" if (parenthesized_expression "(iVar9 == 4)" ( (binary_expression "iVar9 == 4" identifier == number_literal) )) (compound_statement "{\n          return 4;\n        }" { (return_statement "return 4;" return number_literal ;) })) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }" if (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U))" ( (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)" number_literal < (call_expression "(byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(iVar8 + 4 + param_5) + 0x80U)" ( (binary_expression "*(char *)(iVar8 + 4 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 4 + param_5)" * (cast_expression "(char *)(iVar8 + 4 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4 + param_5)" ( (binary_expression "iVar8 + 4 + param_5" (binary_expression "iVar8 + 4" identifier + number_literal) + identifier) )))) + number_literal) )))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar9 != 6) {\n          return 5;\n        }" if (parenthesized_expression "(iVar9 != 6)" ( (binary_expression "iVar9 != 6" identifier != number_literal) )) (compound_statement "{\n          return 5;\n        }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "bVar4 = *(byte *)(iVar8 + 5 + param_5);" (assignment_expression "bVar4 = *(byte *)(iVar8 + 5 + param_5)" identifier = (pointer_expression "*(byte *)(iVar8 + 5 + param_5)" * (cast_expression "(byte *)(iVar8 + 5 + param_5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 5 + param_5)" ( (binary_expression "iVar8 + 5 + param_5" (binary_expression "iVar8 + 5" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) }))) (if_statement "if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }" if (parenthesized_expression "((byte)(bVar4 + 0x80) < 0x40)" ( (binary_expression "(byte)(bVar4 + 0x80) < 0x40" (call_expression "(byte)(bVar4 + 0x80)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar4 + 0x80)" ( (binary_expression "bVar4 + 0x80" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n        return iVar8;\n      }" { (return_statement "return iVar8;" return identifier ;) })) })) }) (else_clause "else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" else (if_statement "if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\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    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" { (expression_statement "iVar8 = param_5 + 1;" (assignment_expression "iVar8 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }" if (parenthesized_expression "(iVar8 < *(int *)(param_4 + 0x1c))" ( (binary_expression "iVar8 < *(int *)(param_4 + 0x1c)" identifier < (pointer_expression "*(int *)(param_4 + 0x1c)" * (cast_expression "(int *)(param_4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x1c)" ( (binary_expression "param_4 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }" { (if_statement "if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }" if (parenthesized_expression "(*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1)" ( (binary_expression "*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1" (pointer_expression "*(int *)(*(int *)(param_4 + 8) + iVar8 * 4)" * (cast_expression "(int *)(*(int *)(param_4 + 8) + iVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 8) + iVar8 * 4)" ( (binary_expression "*(int *)(param_4 + 8) + iVar8 * 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 "iVar8 * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }" { (expression_statement "iVar9 = *(int *)(param_4 + 0x1c) - param_5;" (assignment_expression "iVar9 = *(int *)(param_4 + 0x1c) - param_5" identifier = (binary_expression "*(int *)(param_4 + 0x1c) - param_5" (pointer_expression "*(int *)(param_4 + 0x1c)" * (cast_expression "(int *)(param_4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x1c)" ( (binary_expression "param_4 + 0x1c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);" (assignment_expression "pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" identifier = (cast_expression "(wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" ( (binary_expression "*(int *)(param_4 + 8) + -4 + iVar8 * 4" (binary_expression "*(int *)(param_4 + 8) + -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) )))) + number_literal) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (do_statement "do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);" do (compound_statement "{\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar9;" (assignment_expression "iVar6 = iVar9" identifier = identifier) ;) (if_statement "if (iVar8 == iVar9) break;" if (parenthesized_expression "(iVar8 == iVar9)" ( (binary_expression "iVar8 == iVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar2[iVar8] == 0xffffffff)" ( (binary_expression "pwVar2[iVar8] == 0xffffffff" (subscript_expression "pwVar2[iVar8]" identifier [ identifier ]) == number_literal) )) ;) (if_statement "if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" if (parenthesized_expression "(cVar3 == '\x05')" ( (binary_expression "cVar3 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }" { (if_statement "if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }" if (parenthesized_expression "(((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'))" ( (binary_expression "((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (parenthesized_expression "((*param_2 & 0x40) == 0)" ( (binary_expression "(*param_2 & 0x40) == 0" (parenthesized_expression "(*param_2 & 0x40)" ( (binary_expression "*param_2 & 0x40" (pointer_expression "*param_2" * 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 ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }" if (parenthesized_expression "((*param_2 & 0x80) == 0)" ( (binary_expression "(*param_2 & 0x80) == 0" (parenthesized_expression "(*param_2 & 0x80)" ( (binary_expression "*param_2 & 0x80" (pointer_expression "*param_2" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            return iVar6;\n          }" { (return_statement "return iVar6;" return identifier ;) })) (expression_statement "bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);" (assignment_expression "bVar5 = *(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 (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" else (compound_statement "{\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" { (if_statement "if (cVar3 != '\x06') {\n            return 0;\n          }" if (parenthesized_expression "(cVar3 != '\x06')" ( (binary_expression "cVar3 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (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 "iVar8 = puVar1[8];" (assignment_expression "iVar8 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = puVar1[5];" (assignment_expression "iVar9 = puVar1[5]" identifier = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }" if (parenthesized_expression "((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0))" ( (binary_expression "(iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar9 != 0 || puVar1[9] != 0)" ( (binary_expression "iVar9 != 0 || puVar1[9] != 0" (binary_expression "iVar9 != 0" identifier != number_literal) || (binary_expression "puVar1[9] != 0" (subscript_expression "puVar1[9]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }" { (expression_statement "__wc = *pwVar2;" (assignment_expression "__wc = *pwVar2" identifier = (pointer_expression "*pwVar2" * identifier)) ;) (if_statement "if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }" { (if_statement "if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\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                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);" do (compound_statement "{\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == iVar9) goto LAB_0001f3cc;" if (parenthesized_expression "(iVar7 == iVar9)" ( (binary_expression "iVar7 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_0001f3cc;" goto statement_identifier ;)) }) while (parenthesized_expression "(__wc != ((wint_t *)*puVar1)[iVar7])" ( (binary_expression "__wc != ((wint_t *)*puVar1)[iVar7]" identifier != (subscript_expression "((wint_t *)*puVar1)[iVar7]" (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_0001f412:\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 iVar6;" return identifier ;) })) (labeled_statement "LAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }" statement_identifier : (if_statement "if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = 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              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);" do (compound_statement "{\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              }" { (expression_statement "iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));" (assignment_expression "iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" identifier = (call_expression "iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" identifier (argument_list "(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" ( identifier , (pointer_expression "*(wctype_t *)(puVar1[3] + iVar8 * 4)" * (cast_expression "(wctype_t *)(puVar1[3] + iVar8 * 4)" ( (type_descriptor "wctype_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[3] + iVar8 * 4)" ( (binary_expression "puVar1[3] + iVar8 * 4" (subscript_expression "puVar1[3]" identifier [ number_literal ]) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar9 != 0) goto LAB_0001f412;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001f412;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 < (int)puVar1[9])" ( (binary_expression "iVar8 < (int)puVar1[9]" identifier < (cast_expression "(int)puVar1[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[9]" identifier [ number_literal ]))) )) ;) (expression_statement "iVar8 = puVar1[8];" (assignment_expression "iVar8 = puVar1[8]" identifier = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);" do (compound_statement "{\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              }" { (if_statement "if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;" if (parenthesized_expression "((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4)))" ( (binary_expression "(*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))" (parenthesized_expression "(*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc)" ( (binary_expression "*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar1[1] + iVar9 * 4)" * (cast_expression "(int *)(puVar1[1] + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[1] + iVar9 * 4)" ( (binary_expression "puVar1[1] + iVar9 * 4" (subscript_expression "puVar1[1]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) <= (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))" ( (binary_expression "(int)__wc <= *(int *)(puVar1[2] + iVar9 * 4)" (cast_expression "(int)__wc" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(puVar1[2] + iVar9 * 4)" * (cast_expression "(int *)(puVar1[2] + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1[2] + iVar9 * 4)" ( (binary_expression "puVar1[2] + iVar9 * 4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ))) )) (goto_statement "goto LAB_0001f412;" 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 != iVar8)" ( (binary_expression "iVar9 != iVar8" identifier != identifier) )) ;) })) })) (expression_statement "bVar5 = *(byte *)(puVar1 + 4) & 1;" (assignment_expression "bVar5 = *(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 (bVar5 != 0) {\n          return iVar6;\n        }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          return iVar6;\n        }" { (return_statement "return iVar6;" 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 (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (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 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 (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) + LIT) )))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) + LIT) )))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) + LIT) )))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) + LIT) )))) )) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) (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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (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) )))) + (binary_expression IDENT * LIT)) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (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 ;) })) (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 * IDENT)) ;) (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_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 *puVar1;\n  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0001f2d0(int param_1,uint *param_2,int param_3,int param_4,int param_5)" (identifier "FUN_0001f2d0") (parameter_list "(int param_1,uint *param_2,int param_3,int param_4,int param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (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  wint_t *pwVar2;\n  char cVar3;\n  byte bVar4;\n  wint_t __wc;\n  byte bVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  puVar1 = (undefined4 *)(param_1 + param_3 * 8);\n  cVar3 = *(char *)(puVar1 + 1);\n  if (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "wint_t *pwVar2;" (type_identifier "wint_t") (pointer_declarator "*pwVar2" (* "*") (identifier "pwVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "wint_t __wc;" (type_identifier "wint_t") (identifier "__wc") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (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 "cVar3 = *(char *)(puVar1 + 1);" (assignment_expression "cVar3 = *(char *)(puVar1 + 1)" (identifier "cVar3") (= "=") (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 (cVar3 == '\a') {\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }\n  else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(cVar3 == '\a')" (( "(") (binary_expression "cVar3 == '\a'" (identifier "cVar3") (== "==") (char_literal "'\a'" (' "'") (escape_sequence "\a") (' "'"))) () ")")) (compound_statement "{\n    iVar8 = *(int *)(param_4 + 4);\n    bVar5 = *(byte *)(iVar8 + param_5);\n    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar8 = *(int *)(param_4 + 4);" (assignment_expression "iVar8 = *(int *)(param_4 + 4)" (identifier "iVar8") (= "=") (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 "bVar5 = *(byte *)(iVar8 + param_5);" (assignment_expression "bVar5 = *(byte *)(iVar8 + param_5)" (identifier "bVar5") (= "=") (pointer_expression "*(byte *)(iVar8 + param_5)" (* "*") (cast_expression "(byte *)(iVar8 + param_5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + param_5)" (( "(") (binary_expression "iVar8 + param_5" (identifier "iVar8") (+ "+") (identifier "param_5")) () ")"))))) (; ";")) (if_statement "if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {\n      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }" (if "if") (parenthesized_expression "((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30)))" (( "(") (binary_expression "(0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))" (parenthesized_expression "(0xc1 < bVar5)" (( "(") (binary_expression "0xc1 < bVar5" (number_literal "0xc1") (< "<") (identifier "bVar5")) () ")")) (&& "&&") (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      bVar4 = *(byte *)(iVar8 + 1 + param_5);\n      if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }\n      if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }\n    }" ({ "{") (expression_statement "bVar4 = *(byte *)(iVar8 + 1 + param_5);" (assignment_expression "bVar4 = *(byte *)(iVar8 + 1 + param_5)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(iVar8 + 1 + param_5)" (* "*") (cast_expression "(byte *)(iVar8 + 1 + param_5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 1 + param_5)" (( "(") (binary_expression "iVar8 + 1 + param_5" (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1")) (+ "+") (identifier "param_5")) () ")"))))) (; ";")) (if_statement "if (bVar5 < 0xe0) {\n        iVar8 = 2;\n      }\n      else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" (if "if") (parenthesized_expression "(bVar5 < 0xe0)" (( "(") (binary_expression "bVar5 < 0xe0" (identifier "bVar5") (< "<") (number_literal "0xe0")) () ")")) (compound_statement "{\n        iVar8 = 2;\n      }" ({ "{") (expression_statement "iVar8 = 2;" (assignment_expression "iVar8 = 2" (identifier "iVar8") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" (else "else") (compound_statement "{\n        if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }\n        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 3) {\n          return 3;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 == 4) {\n          return 4;\n        }\n        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }\n        if (iVar9 != 6) {\n          return 5;\n        }\n        bVar4 = *(byte *)(iVar8 + 5 + param_5);\n        iVar8 = 6;\n      }" ({ "{") (if_statement "if (bVar5 < 0xf0) {\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }\n        else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" (if "if") (parenthesized_expression "(bVar5 < 0xf0)" (( "(") (binary_expression "bVar5 < 0xf0" (identifier "bVar5") (< "<") (number_literal "0xf0")) () ")")) (compound_statement "{\n          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }\n          iVar9 = 3;\n        }" ({ "{") (if_statement "if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar5 == 0xe0) && (bVar4 < 0xa0))" (( "(") (binary_expression "(bVar5 == 0xe0) && (bVar4 < 0xa0)" (parenthesized_expression "(bVar5 == 0xe0)" (( "(") (binary_expression "bVar5 == 0xe0" (identifier "bVar5") (== "==") (number_literal "0xe0")) () ")")) (&& "&&") (parenthesized_expression "(bVar4 < 0xa0)" (( "(") (binary_expression "bVar4 < 0xa0" (identifier "bVar4") (< "<") (number_literal "0xa0")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" (identifier "iVar9") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" (else "else") (if_statement "if (bVar5 < 0xf8) {\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }\n        else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" (if "if") (parenthesized_expression "(bVar5 < 0xf8)" (( "(") (binary_expression "bVar5 < 0xf8" (identifier "bVar5") (< "<") (number_literal "0xf8")) () ")")) (compound_statement "{\n          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }\n          iVar9 = 4;\n        }" ({ "{") (if_statement "if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar5 == 0xf0) && (bVar4 < 0x90))" (( "(") (binary_expression "(bVar5 == 0xf0) && (bVar4 < 0x90)" (parenthesized_expression "(bVar5 == 0xf0)" (( "(") (binary_expression "bVar5 == 0xf0" (identifier "bVar5") (== "==") (number_literal "0xf0")) () ")")) (&& "&&") (parenthesized_expression "(bVar4 < 0x90)" (( "(") (binary_expression "bVar4 < 0x90" (identifier "bVar4") (< "<") (number_literal "0x90")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar9 = 4;" (assignment_expression "iVar9 = 4" (identifier "iVar9") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" (else "else") (if_statement "if (bVar5 < 0xfc) {\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }\n        else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" (if "if") (parenthesized_expression "(bVar5 < 0xfc)" (( "(") (binary_expression "bVar5 < 0xfc" (identifier "bVar5") (< "<") (number_literal "0xfc")) () ")")) (compound_statement "{\n          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }\n          iVar9 = 5;\n        }" ({ "{") (if_statement "if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar5 == 0xf8) && (bVar4 < 0x88))" (( "(") (binary_expression "(bVar5 == 0xf8) && (bVar4 < 0x88)" (parenthesized_expression "(bVar5 == 0xf8)" (( "(") (binary_expression "bVar5 == 0xf8" (identifier "bVar5") (== "==") (number_literal "0xf8")) () ")")) (&& "&&") (parenthesized_expression "(bVar4 < 0x88)" (( "(") (binary_expression "bVar4 < 0x88" (identifier "bVar4") (< "<") (number_literal "0x88")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar9 = 5;" (assignment_expression "iVar9 = 5" (identifier "iVar9") (= "=") (number_literal "5")) (; ";")) (} "}")) (else_clause "else {\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" (else "else") (compound_statement "{\n          if (0xfd < bVar5) {\n            return 0;\n          }\n          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }\n          iVar9 = 6;\n        }" ({ "{") (if_statement "if (0xfd < bVar5) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(0xfd < bVar5)" (( "(") (binary_expression "0xfd < bVar5" (number_literal "0xfd") (< "<") (identifier "bVar5")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((bVar5 == 0xfc) && (bVar4 < 0x84))" (( "(") (binary_expression "(bVar5 == 0xfc) && (bVar4 < 0x84)" (parenthesized_expression "(bVar5 == 0xfc)" (( "(") (binary_expression "bVar5 == 0xfc" (identifier "bVar5") (== "==") (number_literal "0xfc")) () ")")) (&& "&&") (parenthesized_expression "(bVar4 < 0x84)" (( "(") (binary_expression "bVar4 < 0x84" (identifier "bVar4") (< "<") (number_literal "0x84")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar9 = 6;" (assignment_expression "iVar9 = 6" (identifier "iVar9") (= "=") (number_literal "6")) (; ";")) (} "}")))))))) (if_statement "if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 0x30) < param_5 + iVar9)" (( "(") (binary_expression "*(int *)(param_4 + 0x30) < param_5 + iVar9" (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")) () ")")))) (< "<") (binary_expression "param_5 + iVar9" (identifier "param_5") (+ "+") (identifier "iVar9"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U))" (( "(") (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)" (number_literal "0x3f") (< "<") (call_expression "(byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(char *)(iVar8 + 1 + param_5) + 0x80U)" (( "(") (binary_expression "*(char *)(iVar8 + 1 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 1 + param_5)" (* "*") (cast_expression "(char *)(iVar8 + 1 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 1 + param_5)" (( "(") (binary_expression "iVar8 + 1 + param_5" (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1")) (+ "+") (identifier "param_5")) () ")")))) (+ "+") (number_literal "0x80U")) () ")")))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U))" (( "(") (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)" (number_literal "0x3f") (< "<") (call_expression "(byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(char *)(iVar8 + 2 + param_5) + 0x80U)" (( "(") (binary_expression "*(char *)(iVar8 + 2 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 2 + param_5)" (* "*") (cast_expression "(char *)(iVar8 + 2 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 2 + param_5)" (( "(") (binary_expression "iVar8 + 2 + param_5" (binary_expression "iVar8 + 2" (identifier "iVar8") (+ "+") (number_literal "2")) (+ "+") (identifier "param_5")) () ")")))) (+ "+") (number_literal "0x80U")) () ")")))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar9 == 3) {\n          return 3;\n        }" (if "if") (parenthesized_expression "(iVar9 == 3)" (( "(") (binary_expression "iVar9 == 3" (identifier "iVar9") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n          return 3;\n        }" ({ "{") (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}"))) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U))" (( "(") (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)" (number_literal "0x3f") (< "<") (call_expression "(byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(char *)(iVar8 + 3 + param_5) + 0x80U)" (( "(") (binary_expression "*(char *)(iVar8 + 3 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 3 + param_5)" (* "*") (cast_expression "(char *)(iVar8 + 3 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 3 + param_5)" (( "(") (binary_expression "iVar8 + 3 + param_5" (binary_expression "iVar8 + 3" (identifier "iVar8") (+ "+") (number_literal "3")) (+ "+") (identifier "param_5")) () ")")))) (+ "+") (number_literal "0x80U")) () ")")))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar9 == 4) {\n          return 4;\n        }" (if "if") (parenthesized_expression "(iVar9 == 4)" (( "(") (binary_expression "iVar9 == 4" (identifier "iVar9") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n          return 4;\n        }" ({ "{") (return_statement "return 4;" (return "return") (number_literal "4") (; ";")) (} "}"))) (if_statement "if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U))" (( "(") (binary_expression "0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)" (number_literal "0x3f") (< "<") (call_expression "(byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(char *)(iVar8 + 4 + param_5) + 0x80U)" (( "(") (binary_expression "*(char *)(iVar8 + 4 + param_5) + 0x80U" (pointer_expression "*(char *)(iVar8 + 4 + param_5)" (* "*") (cast_expression "(char *)(iVar8 + 4 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4 + param_5)" (( "(") (binary_expression "iVar8 + 4 + param_5" (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) (+ "+") (identifier "param_5")) () ")")))) (+ "+") (number_literal "0x80U")) () ")")))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar9 != 6) {\n          return 5;\n        }" (if "if") (parenthesized_expression "(iVar9 != 6)" (( "(") (binary_expression "iVar9 != 6" (identifier "iVar9") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n          return 5;\n        }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (expression_statement "bVar4 = *(byte *)(iVar8 + 5 + param_5);" (assignment_expression "bVar4 = *(byte *)(iVar8 + 5 + param_5)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(iVar8 + 5 + param_5)" (* "*") (cast_expression "(byte *)(iVar8 + 5 + param_5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 5 + param_5)" (( "(") (binary_expression "iVar8 + 5 + param_5" (binary_expression "iVar8 + 5" (identifier "iVar8") (+ "+") (number_literal "5")) (+ "+") (identifier "param_5")) () ")"))))) (; ";")) (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" (identifier "iVar8") (= "=") (number_literal "6")) (; ";")) (} "}")))) (if_statement "if ((byte)(bVar4 + 0x80) < 0x40) {\n        return iVar8;\n      }" (if "if") (parenthesized_expression "((byte)(bVar4 + 0x80) < 0x40)" (( "(") (binary_expression "(byte)(bVar4 + 0x80) < 0x40" (call_expression "(byte)(bVar4 + 0x80)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar4 + 0x80)" (( "(") (binary_expression "bVar4 + 0x80" (identifier "bVar4") (+ "+") (number_literal "0x80")) () ")"))) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n        return iVar8;\n      }" ({ "{") (return_statement "return iVar8;" (return "return") (identifier "iVar8") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" (else "else") (if_statement "if (*(int *)(param_4 + 0x50) != 1) {\n    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\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    iVar8 = param_5 + 1;\n    if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "iVar8 = param_5 + 1;" (assignment_expression "iVar8 = param_5 + 1" (identifier "iVar8") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar8 < *(int *)(param_4 + 0x1c)) {\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar8 < *(int *)(param_4 + 0x1c))" (( "(") (binary_expression "iVar8 < *(int *)(param_4 + 0x1c)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(param_4 + 0x1c)" (* "*") (cast_expression "(int *)(param_4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x1c)" (( "(") (binary_expression "param_4 + 0x1c" (identifier "param_4") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }\n    }" ({ "{") (if_statement "if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1)" (( "(") (binary_expression "*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1" (pointer_expression "*(int *)(*(int *)(param_4 + 8) + iVar8 * 4)" (* "*") (cast_expression "(int *)(*(int *)(param_4 + 8) + iVar8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 8) + iVar8 * 4)" (( "(") (binary_expression "*(int *)(param_4 + 8) + iVar8 * 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 "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        iVar9 = *(int *)(param_4 + 0x1c) - param_5;\n        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);\n        iVar8 = 1;\n        do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);\n        if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }\n        if (bVar5 != 0) {\n          return iVar6;\n        }\n      }" ({ "{") (expression_statement "iVar9 = *(int *)(param_4 + 0x1c) - param_5;" (assignment_expression "iVar9 = *(int *)(param_4 + 0x1c) - param_5" (identifier "iVar9") (= "=") (binary_expression "*(int *)(param_4 + 0x1c) - param_5" (pointer_expression "*(int *)(param_4 + 0x1c)" (* "*") (cast_expression "(int *)(param_4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x1c)" (( "(") (binary_expression "param_4 + 0x1c" (identifier "param_4") (+ "+") (number_literal "0x1c")) () ")")))) (- "-") (identifier "param_5"))) (; ";")) (expression_statement "pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);" (assignment_expression "pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" (identifier "pwVar2") (= "=") (cast_expression "(wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" (( "(") (type_descriptor "wint_t *" (type_identifier "wint_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 8) + -4 + iVar8 * 4)" (( "(") (binary_expression "*(int *)(param_4 + 8) + -4 + iVar8 * 4" (binary_expression "*(int *)(param_4 + 8) + -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")) () ")")))) (+ "+") (number_literal "-4")) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        } while (pwVar2[iVar8] == 0xffffffff);" (do "do") (compound_statement "{\n          iVar8 = iVar8 + 1;\n          iVar6 = iVar9;\n          if (iVar8 == iVar9) break;\n          iVar6 = iVar8;\n        }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = iVar9;" (assignment_expression "iVar6 = iVar9" (identifier "iVar6") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar8 == iVar9) break;" (if "if") (parenthesized_expression "(iVar8 == iVar9)" (( "(") (binary_expression "iVar8 == iVar9" (identifier "iVar8") (== "==") (identifier "iVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" (identifier "iVar6") (= "=") (identifier "iVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pwVar2[iVar8] == 0xffffffff)" (( "(") (binary_expression "pwVar2[iVar8] == 0xffffffff" (subscript_expression "pwVar2[iVar8]" (identifier "pwVar2") ([ "[") (identifier "iVar8") (] "]")) (== "==") (number_literal "0xffffffff")) () ")")) (; ";")) (if_statement "if (cVar3 == '\x05') {\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }\n        else {\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" (if "if") (parenthesized_expression "(cVar3 == '\x05')" (( "(") (binary_expression "cVar3 == '\x05'" (identifier "cVar3") (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }\n          if ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }\n          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);\n        }" ({ "{") (if_statement "if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n'))" (( "(") (binary_expression "((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')" (parenthesized_expression "((*param_2 & 0x40) == 0)" (( "(") (binary_expression "(*param_2 & 0x40) == 0" (parenthesized_expression "(*param_2 & 0x40)" (( "(") (binary_expression "*param_2 & 0x40" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (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 ((*param_2 & 0x80) == 0) {\n            return iVar6;\n          }" (if "if") (parenthesized_expression "((*param_2 & 0x80) == 0)" (( "(") (binary_expression "(*param_2 & 0x80) == 0" (parenthesized_expression "(*param_2 & 0x80)" (( "(") (binary_expression "*param_2 & 0x80" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return iVar6;\n          }" ({ "{") (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}"))) (expression_statement "bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);" (assignment_expression "bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5)" (identifier "bVar5") (= "=") (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 (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" (else "else") (compound_statement "{\n          if (cVar3 != '\x06') {\n            return 0;\n          }\n          puVar1 = (undefined4 *)*puVar1;\n          iVar8 = puVar1[8];\n          iVar9 = puVar1[5];\n          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }\n          bVar5 = *(byte *)(puVar1 + 4) & 1;\n        }" ({ "{") (if_statement "if (cVar3 != '\x06') {\n            return 0;\n          }" (if "if") (parenthesized_expression "(cVar3 != '\x06')" (( "(") (binary_expression "cVar3 != '\x06'" (identifier "cVar3") (!= "!=") (char_literal "'\x06'" (' "'") (escape_sequence "\x06") (' "'"))) () ")")) (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 "iVar8 = puVar1[8];" (assignment_expression "iVar8 = puVar1[8]" (identifier "iVar8") (= "=") (subscript_expression "puVar1[8]" (identifier "puVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar9 = puVar1[5];" (assignment_expression "iVar9 = puVar1[5]" (identifier "iVar9") (= "=") (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }" (if "if") (parenthesized_expression "((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0))" (( "(") (binary_expression "(iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)" (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar9 != 0 || puVar1[9] != 0)" (( "(") (binary_expression "iVar9 != 0 || puVar1[9] != 0" (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "puVar1[9] != 0" (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            __wc = *pwVar2;\n            if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }\nLAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }\n            if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }\n          }" ({ "{") (expression_statement "__wc = *pwVar2;" (assignment_expression "__wc = *pwVar2" (identifier "__wc") (= "=") (pointer_expression "*pwVar2" (* "*") (identifier "pwVar2"))) (; ";")) (if_statement "if (0 < iVar9) {\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }" (if "if") (parenthesized_expression "(0 < iVar9)" (( "(") (binary_expression "0 < iVar9" (number_literal "0") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n              if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }\nLAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }\n              return iVar6;\n            }" ({ "{") (if_statement "if (__wc != *(wint_t *)*puVar1) {\n                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\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                iVar7 = 0;\n                do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);\n              }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                } while (__wc != ((wint_t *)*puVar1)[iVar7]);" (do "do") (compound_statement "{\n                  iVar7 = iVar7 + 1;\n                  if (iVar7 == iVar9) goto LAB_0001f3cc;\n                }" ({ "{") (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar7 == iVar9) goto LAB_0001f3cc;" (if "if") (parenthesized_expression "(iVar7 == iVar9)" (( "(") (binary_expression "iVar7 == iVar9" (identifier "iVar7") (== "==") (identifier "iVar9")) () ")")) (goto_statement "goto LAB_0001f3cc;" (goto "goto") (statement_identifier "LAB_0001f3cc") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(__wc != ((wint_t *)*puVar1)[iVar7])" (( "(") (binary_expression "__wc != ((wint_t *)*puVar1)[iVar7]" (identifier "__wc") (!= "!=") (subscript_expression "((wint_t *)*puVar1)[iVar7]" (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 "iVar7") (] "]"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0001f412:\n              if ((*(byte *)(puVar1 + 4) & 1) != 0) {\n                return 0;\n              }" (statement_identifier "LAB_0001f412") (: ":") (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 iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}"))) (labeled_statement "LAB_0001f3cc:\n            if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }" (statement_identifier "LAB_0001f3cc") (: ":") (if_statement "if (0 < (int)puVar1[9]) {\n              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = 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              iVar8 = 0;\n              do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);\n              iVar8 = puVar1[8];\n            }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              } while (iVar8 < (int)puVar1[9]);" (do "do") (compound_statement "{\n                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));\n                if (iVar9 != 0) goto LAB_0001f412;\n                iVar8 = iVar8 + 1;\n              }" ({ "{") (expression_statement "iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));" (assignment_expression "iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" (identifier "iVar9") (= "=") (call_expression "iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" (identifier "iswctype") (argument_list "(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4))" (( "(") (identifier "__wc") (, ",") (pointer_expression "*(wctype_t *)(puVar1[3] + iVar8 * 4)" (* "*") (cast_expression "(wctype_t *)(puVar1[3] + iVar8 * 4)" (( "(") (type_descriptor "wctype_t *" (type_identifier "wctype_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1[3] + iVar8 * 4)" (( "(") (binary_expression "puVar1[3] + iVar8 * 4" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_0001f412;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001f412;" (goto "goto") (statement_identifier "LAB_0001f412") (; ";"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < (int)puVar1[9])" (( "(") (binary_expression "iVar8 < (int)puVar1[9]" (identifier "iVar8") (< "<") (cast_expression "(int)puVar1[9]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]")))) () ")")) (; ";")) (expression_statement "iVar8 = puVar1[8];" (assignment_expression "iVar8 = puVar1[8]" (identifier "iVar8") (= "=") (subscript_expression "puVar1[8]" (identifier "puVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")))) (if_statement "if (0 < iVar8) {\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }" (if "if") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n              iVar9 = 0;\n              do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);\n            }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              } while (iVar9 != iVar8);" (do "do") (compound_statement "{\n                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;\n                iVar9 = iVar9 + 1;\n              }" ({ "{") (if_statement "if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;" (if "if") (parenthesized_expression "((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4)))" (( "(") (binary_expression "(*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&\n                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))" (parenthesized_expression "(*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc)" (( "(") (binary_expression "*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc" (pointer_expression "*(int *)(puVar1[1] + iVar9 * 4)" (* "*") (cast_expression "(int *)(puVar1[1] + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1[1] + iVar9 * 4)" (( "(") (binary_expression "puVar1[1] + iVar9 * 4" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))) (<= "<=") (cast_expression "(int)__wc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__wc"))) () ")")) (&& "&&") (parenthesized_expression "((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))" (( "(") (binary_expression "(int)__wc <= *(int *)(puVar1[2] + iVar9 * 4)" (cast_expression "(int)__wc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__wc")) (<= "<=") (pointer_expression "*(int *)(puVar1[2] + iVar9 * 4)" (* "*") (cast_expression "(int *)(puVar1[2] + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1[2] + iVar9 * 4)" (( "(") (binary_expression "puVar1[2] + iVar9 * 4" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_0001f412;" (goto "goto") (statement_identifier "LAB_0001f412") (; ";"))) (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 != iVar8)" (( "(") (binary_expression "iVar9 != iVar8" (identifier "iVar9") (!= "!=") (identifier "iVar8")) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar5 = *(byte *)(puVar1 + 4) & 1;" (assignment_expression "bVar5 = *(byte *)(puVar1 + 4) & 1" (identifier "bVar5") (= "=") (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 (bVar5 != 0) {\n          return iVar6;\n        }" (if "if") (parenthesized_expression "(bVar5 != 0)" (( "(") (binary_expression "bVar5 != 0" (identifier "bVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return iVar6;\n        }" ({ "{") (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* 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_2,type_1 *dfa_1)

{
  type_4 *puVar1;
  type_5 *pwVar2;
  char var_1;
  type_6 var_5;
  type_7 *var_9;
  type_5 var_7;
  type_6 var_4;
  int iVar7;
  int var_8;
  int var_3;
  int var_6;
  
  var_1 = (char)(dfa->word_char + (int)input * 2 + -0x18)[1];
  if (var_1 == '\a') {
    var_3 = *(int *)(var_2 + 4);
    var_4 = *(type_6 *)((int)dfa_1->word_char + var_3 + -0x60);
    if ((0xc1 < var_4) && ((int)((int)&dfa_1->nodes + 1) < *(int *)(var_2 + 0x30))) {
      var_5 = *(type_6 *)((int)dfa_1->word_char + var_3 + -0x5f);
      if (var_4 < 0xe0) {
        var_3 = 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 *)(var_2 + 0x30) < (int)dfa_1->word_char + var_6 + -0x60) {
          return 0;
        }
        if (0x3f < (type_6)(*(char *)((int)dfa_1->word_char + var_3 + -0x5f) + 0x80U)) {
          return 0;
        }
        if (0x3f < (type_6)(*(char *)((int)dfa_1->word_char + var_3 + -0x5e) + 0x80U)) {
          return 0;
        }
        if (var_6 == 3) {
          return 3;
        }
        if (0x3f < (type_6)(*(char *)((int)dfa_1->word_char + var_3 + -0x5d) + 0x80U)) {
          return 0;
        }
        if (var_6 == 4) {
          return 4;
        }
        if (0x3f < (type_6)(*(char *)((int)dfa_1->word_char + var_3 + -0x5c) + 0x80U)) {
          return 0;
        }
        if (var_6 != 6) {
          return 5;
        }
        var_5 = *(type_6 *)((int)dfa_1->word_char + var_3 + -0x5b);
        var_3 = 6;
      }
      if ((type_6)(var_5 + 0x80) < 0x40) {
        return var_3;
      }
    }
  }
  else if (*(int *)(var_2 + 0x50) != 1) {
    puVar1 = (type_4 *)((int)&dfa_1->nodes + 1);
    if ((int)puVar1 < *(int *)(var_2 + 0x1c)) {
      if (*(int *)(*(int *)(var_2 + 8) + (int)puVar1 * 4) == -1) {
        var_6 = *(int *)(var_2 + 0x1c) - (int)dfa_1;
        pwVar2 = (type_5 *)(*(int *)(var_2 + 8) + -4 + (int)puVar1 * 4);
        var_3 = 1;
        do {
          var_3 = var_3 + 1;
          iVar7 = var_6;
          if (var_3 == var_6) break;
          iVar7 = var_3;
        } while (pwVar2[var_3] == 0xffffffff);
        if (var_1 == '\x05') {
          if (((*(type_8 *)node_idx & 0x40) == 0) &&
             (*(char *)((int)dfa_1->word_char + *(int *)(var_2 + 4) + -0x60) == '\n')) {
            return 0;
          }
          if ((*(type_8 *)node_idx & 0x80) == 0) {
            return iVar7;
          }
          var_4 = *(type_6 *)((int)dfa_1->word_char + *(int *)(var_2 + 4) + -0x60);
        }
        else {
          if (var_1 != '\x06') {
            return 0;
          }
          var_9 = (type_7 *)dfa->word_char[(int)input * 2 + -0x18];
          var_3 = var_9[8];
          var_6 = var_9[5];
          if ((var_3 != 0) || (var_6 != 0 || var_9[9] != 0)) {
            var_7 = *pwVar2;
            if (0 < var_6) {
              if (var_7 != *(type_5 *)*var_9) {
                var_8 = 0;
                do {
                  var_8 = var_8 + 1;
                  if (var_8 == var_6) goto LAB_0001f3cc;
                } while (var_7 != ((type_5 *)*var_9)[var_8]);
              }
LAB_0001f412:
              if ((*(type_6 *)(var_9 + 4) & 1) != 0) {
                return 0;
              }
              return iVar7;
            }
LAB_0001f3cc:
            if (0 < (int)var_9[9]) {
              var_3 = 0;
              do {
                var_6 = var_10(var_7,*(type_9 *)(var_9[3] + var_3 * 4));
                if (var_6 != 0) goto LAB_0001f412;
                var_3 = var_3 + 1;
              } while (var_3 < (int)var_9[9]);
              var_3 = var_9[8];
            }
            if (0 < var_3) {
              var_6 = 0;
              do {
                if ((*(int *)(var_9[1] + var_6 * 4) <= (int)var_7) &&
                   ((int)var_7 <= *(int *)(var_9[2] + var_6 * 4))) goto LAB_0001f412;
                var_6 = var_6 + 1;
              } while (var_6 != var_3);
            }
          }
          var_4 = *(type_6 *)(var_9 + 4) & 1;
        }
        if (var_4 != 0) {
          return iVar7;
        }
      }
    }
  }
  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: (pointer_declarator 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: (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: (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 (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (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: (identifier)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (number_literal)))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (number_literal)))))) 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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (number_literal)))))) 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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (number_literal)))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (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 (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (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))))))) consequence: (compound_statement (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: (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)))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal)))) (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: (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)))) (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: (identifier)))) (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)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

int __regparm3 MASKED(int param_1,uint *param_2,int param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  wint_t *pwVar2;
  char cVar3;
  byte bVar4;
  wint_t __wc;
  byte bVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  
  puVar1 = (undefined4 *)(param_1 + param_3 * 8);
  cVar3 = *(char *)(puVar1 + 1);
  if (cVar3 == '\a') {
    iVar8 = *(int *)(param_4 + 4);
    bVar5 = *(byte *)(iVar8 + param_5);
    if ((0xc1 < bVar5) && (param_5 + 1 < *(int *)(param_4 + 0x30))) {
      bVar4 = *(byte *)(iVar8 + 1 + param_5);
      if (bVar5 < 0xe0) {
        iVar8 = 2;
      }
      else {
        if (bVar5 < 0xf0) {
          if ((bVar5 == 0xe0) && (bVar4 < 0xa0)) {
            return 0;
          }
          iVar9 = 3;
        }
        else if (bVar5 < 0xf8) {
          if ((bVar5 == 0xf0) && (bVar4 < 0x90)) {
            return 0;
          }
          iVar9 = 4;
        }
        else if (bVar5 < 0xfc) {
          if ((bVar5 == 0xf8) && (bVar4 < 0x88)) {
            return 0;
          }
          iVar9 = 5;
        }
        else {
          if (0xfd < bVar5) {
            return 0;
          }
          if ((bVar5 == 0xfc) && (bVar4 < 0x84)) {
            return 0;
          }
          iVar9 = 6;
        }
        if (*(int *)(param_4 + 0x30) < param_5 + iVar9) {
          return 0;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 1 + param_5) + 0x80U)) {
          return 0;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 2 + param_5) + 0x80U)) {
          return 0;
        }
        if (iVar9 == 3) {
          return 3;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 3 + param_5) + 0x80U)) {
          return 0;
        }
        if (iVar9 == 4) {
          return 4;
        }
        if (0x3f < (byte)(*(char *)(iVar8 + 4 + param_5) + 0x80U)) {
          return 0;
        }
        if (iVar9 != 6) {
          return 5;
        }
        bVar4 = *(byte *)(iVar8 + 5 + param_5);
        iVar8 = 6;
      }
      if ((byte)(bVar4 + 0x80) < 0x40) {
        return iVar8;
      }
    }
  }
  else if (*(int *)(param_4 + 0x50) != 1) {
    iVar8 = param_5 + 1;
    if (iVar8 < *(int *)(param_4 + 0x1c)) {
      if (*(int *)(*(int *)(param_4 + 8) + iVar8 * 4) == -1) {
        iVar9 = *(int *)(param_4 + 0x1c) - param_5;
        pwVar2 = (wint_t *)(*(int *)(param_4 + 8) + -4 + iVar8 * 4);
        iVar8 = 1;
        do {
          iVar8 = iVar8 + 1;
          iVar6 = iVar9;
          if (iVar8 == iVar9) break;
          iVar6 = iVar8;
        } while (pwVar2[iVar8] == 0xffffffff);
        if (cVar3 == '\x05') {
          if (((*param_2 & 0x40) == 0) && (*(char *)(*(int *)(param_4 + 4) + param_5) == '\n')) {
            return 0;
          }
          if ((*param_2 & 0x80) == 0) {
            return iVar6;
          }
          bVar5 = *(byte *)(*(int *)(param_4 + 4) + param_5);
        }
        else {
          if (cVar3 != '\x06') {
            return 0;
          }
          puVar1 = (undefined4 *)*puVar1;
          iVar8 = puVar1[8];
          iVar9 = puVar1[5];
          if ((iVar8 != 0) || (iVar9 != 0 || puVar1[9] != 0)) {
            __wc = *pwVar2;
            if (0 < iVar9) {
              if (__wc != *(wint_t *)*puVar1) {
                iVar7 = 0;
                do {
                  iVar7 = iVar7 + 1;
                  if (iVar7 == iVar9) goto LAB_0001f3cc;
                } while (__wc != ((wint_t *)*puVar1)[iVar7]);
              }
LAB_0001f412:
              if ((*(byte *)(puVar1 + 4) & 1) != 0) {
                return 0;
              }
              return iVar6;
            }
LAB_0001f3cc:
            if (0 < (int)puVar1[9]) {
              iVar8 = 0;
              do {
                iVar9 = iswctype(__wc,*(wctype_t *)(puVar1[3] + iVar8 * 4));
                if (iVar9 != 0) goto LAB_0001f412;
                iVar8 = iVar8 + 1;
              } while (iVar8 < (int)puVar1[9]);
              iVar8 = puVar1[8];
            }
            if (0 < iVar8) {
              iVar9 = 0;
              do {
                if ((*(int *)(puVar1[1] + iVar9 * 4) <= (int)__wc) &&
                   ((int)__wc <= *(int *)(puVar1[2] + iVar9 * 4))) goto LAB_0001f412;
                iVar9 = iVar9 + 1;
              } while (iVar9 != iVar8);
            }
          }
          bVar5 = *(byte *)(puVar1 + 4) & 1;
        }
        if (bVar5 != 0) {
          return iVar6;
        }
      }
    }
  }
  return 0;
}

