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

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  uchar *puVar4;
  wint_t *pwVar5;
  char cVar7;
  int iVar6;
  bitset_word_t bVar8;
  byte *pbVar9;
  int *piVar10;
  bitset_word_t bVar11;
  int iVar12;
  re_token_t *prVar13;
  wint_t wVar14;
  re_bitset_ptr_t pbVar15;
  
  prVar13 = dfa->nodes;
  cVar7 = prVar13[node_idx].field_0x4;
  if (cVar7 == '\a') {
    puVar4 = input->mbs;
    bVar1 = puVar4[str_idx];
    if (bVar1 < 0xc2) {
      return 0;
    }
    if (input->len <= str_idx + 1) {
      return 0;
    }
    bVar2 = puVar4[str_idx + 1];
    if (bVar1 < 0xe0) {
      if ((bVar2 ^ 0x80) < 0x40) {
        return 2;
      }
      return 0;
    }
    if (bVar1 < 0xf0) {
      iVar3 = 3;
      if (bVar1 == 0xe0) {
        if (bVar2 < 0xa0) {
          return 0;
        }
        iVar3 = 3;
      }
    }
    else if (bVar1 < 0xf8) {
      iVar3 = 4;
      if (bVar1 == 0xf0) {
        iVar12 = str_idx + 4;
        if (bVar2 < 0x90) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else if (bVar1 < 0xfc) {
      iVar3 = 5;
      if (bVar1 == 0xf8) {
        iVar12 = str_idx + 5;
        if (bVar2 < 0x88) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else {
      if (0xfd < bVar1) {
        return 0;
      }
      iVar3 = 6;
      if (bVar1 == 0xfc) {
        iVar12 = str_idx + 6;
        if (bVar2 < 0x84) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    iVar12 = iVar3 + str_idx;
LAB_000313a4:
    if (input->len < iVar12) {
      return 0;
    }
    if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {
      return 0;
    }
    pbVar9 = puVar4 + str_idx + 2;
    do {
      bVar1 = *pbVar9;
      pbVar9 = pbVar9 + 1;
      if (0x3f < (bVar1 ^ 0x80)) {
        return 0;
      }
    } while (puVar4 + iVar3 + str_idx != pbVar9);
    return iVar3;
  }
  iVar3 = re_string_char_size_at(input,str_idx);
  if (cVar7 == '\x05') {
    if (iVar3 < 2) {
      return 0;
    }
    if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {
      return 0;
    }
    if ((dfa->syntax & 0x80) == 0) {
      return iVar3;
    }
    if (input->mbs[str_idx] != '\0') {
      return iVar3;
    }
    return 0;
  }
  if (iVar3 < 2) {
    return 0;
  }
  if (cVar7 != '\x06') {
    return 0;
  }
  pbVar15 = prVar13[node_idx].opr.sbcset;
  if ((pbVar15[8] == 0) && (pbVar15[9] == 0)) {
    wVar14 = pbVar15[5];
    if (wVar14 != 0) {
      wVar14 = re_string_wchar_at(input,str_idx);
      bVar11 = pbVar15[5];
      if (0 < (int)bVar11) goto LAB_00031588;
      bVar11 = pbVar15[8];
      goto LAB_00031618;
    }
  }
  else {
    wVar14 = re_string_wchar_at(input,str_idx);
    bVar11 = pbVar15[5];
    if (0 < (int)bVar11) {
LAB_00031588:
      pwVar5 = (wint_t *)*pbVar15;
      if (wVar14 != *pwVar5) {
        bVar8 = 1;
        do {
          pwVar5 = pwVar5 + 1;
          if (bVar11 == bVar8) goto LAB_000315c8;
          bVar8 = bVar8 + 1;
        } while (wVar14 != *pwVar5);
      }
LAB_000315b8:
      cVar7 = *(char *)(pbVar15 + 4);
LAB_000315bc:
      if (-1 < cVar7) {
        return iVar3;
      }
      return 0;
    }
LAB_000315c8:
    if (0 < (int)pbVar15[9]) {
      iVar12 = 0;
      do {
        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));
        iVar12 = iVar12 + 1;
        if (iVar6 != 0) goto LAB_000315b8;
      } while (iVar12 < (int)pbVar15[9]);
    }
  }
  bVar11 = pbVar15[8];
LAB_00031618:
  bVar8 = 0;
  if (0 < (int)bVar11) {
    piVar10 = (int *)pbVar15[1];
    do {
      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {
        cVar7 = *(char *)(pbVar15 + 4);
        goto LAB_000315bc;
      }
      bVar8 = bVar8 + 1;
      piVar10 = piVar10 + 1;
    } while (bVar8 != bVar11);
  }
  if (*(char *)(pbVar15 + 4) < '\0') {
    if (iVar3 < 1) {
      iVar3 = 1;
    }
  }
  else {
    iVar3 = 0;
  }
  return iVar3;
}



int FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  byte *pbVar6;
  int *piVar7;
  int iVar8;
  undefined4 *puVar9;
  int iVar10;
  int *piVar11;
  
  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);
  cVar4 = *(char *)(puVar9 + 1);
  if (cVar4 == '\a') {
    iVar3 = *(int *)(param_3 + 4);
    bVar1 = *(byte *)(iVar3 + param_4);
    if (bVar1 < 0xc2) {
      return 0;
    }
    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {
      return 0;
    }
    bVar2 = *(byte *)(iVar3 + param_4 + 1);
    if (bVar1 < 0xe0) {
      if ((bVar2 ^ 0x80) < 0x40) {
        return 2;
      }
      return 0;
    }
    if (bVar1 < 0xf0) {
      iVar10 = 3;
      if (bVar1 == 0xe0) {
        if (bVar2 < 0xa0) {
          return 0;
        }
        iVar10 = 3;
      }
    }
    else if (bVar1 < 0xf8) {
      iVar10 = 4;
      if (bVar1 == 0xf0) {
        iVar8 = param_4 + 4;
        if (bVar2 < 0x90) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else if (bVar1 < 0xfc) {
      iVar10 = 5;
      if (bVar1 == 0xf8) {
        iVar8 = param_4 + 5;
        if (bVar2 < 0x88) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else {
      if (0xfd < bVar1) {
        return 0;
      }
      iVar10 = 6;
      if (bVar1 == 0xfc) {
        iVar8 = param_4 + 6;
        if (bVar2 < 0x84) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    iVar8 = iVar10 + param_4;
LAB_000313a4:
    if (*(int *)(param_3 + 0x30) < iVar8) {
      return 0;
    }
    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {
      return 0;
    }
    pbVar6 = (byte *)(iVar3 + param_4 + 2);
    do {
      bVar1 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if (0x3f < (bVar1 ^ 0x80)) {
        return 0;
      }
    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);
    return iVar10;
  }
  iVar3 = FUN_0002a188(param_3,param_4);
  if (cVar4 == '\x05') {
    if (iVar3 < 2) {
      return 0;
    }
    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {
      return 0;
    }
    if ((param_1[0x20] & 0x80U) == 0) {
      return iVar3;
    }
    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {
      return iVar3;
    }
    return 0;
  }
  if (iVar3 < 2) {
    return 0;
  }
  if (cVar4 != '\x06') {
    return 0;
  }
  piVar11 = (int *)*puVar9;
  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {
    iVar10 = piVar11[5];
    if (iVar10 != 0) {
      iVar10 = FUN_0002a20c(param_3,param_4);
      iVar8 = piVar11[5];
      if (0 < iVar8) goto LAB_00031588;
      iVar8 = piVar11[8];
      goto LAB_00031618;
    }
  }
  else {
    iVar10 = FUN_0002a20c(param_3,param_4);
    iVar8 = piVar11[5];
    if (0 < iVar8) {
LAB_00031588:
      piVar7 = (int *)*piVar11;
      if (iVar10 != *piVar7) {
        iVar5 = 1;
        do {
          piVar7 = piVar7 + 1;
          if (iVar8 == iVar5) goto LAB_000315c8;
          iVar5 = iVar5 + 1;
        } while (iVar10 != *piVar7);
      }
LAB_000315b8:
      cVar4 = *(char *)(piVar11 + 4);
LAB_000315bc:
      if (-1 < cVar4) {
        return iVar3;
      }
      return 0;
    }
LAB_000315c8:
    if (0 < piVar11[9]) {
      iVar8 = 0;
      do {
        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));
        iVar8 = iVar8 + 1;
        if (iVar5 != 0) goto LAB_000315b8;
      } while (iVar8 < piVar11[9]);
    }
  }
  iVar8 = piVar11[8];
LAB_00031618:
  iVar5 = 0;
  if (0 < iVar8) {
    piVar7 = (int *)piVar11[1];
    do {
      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {
        cVar4 = *(char *)(piVar11 + 4);
        goto LAB_000315bc;
      }
      iVar5 = iVar5 + 1;
      piVar7 = piVar7 + 1;
    } while (iVar5 != iVar8);
  }
  if (*(char *)(piVar11 + 4) < '\0') {
    if (iVar3 < 1) {
      iVar3 = 1;
    }
  }
  else {
    iVar3 = 0;
  }
  return iVar3;
}


lui gp,0x3
addiu gp,gp,-0x41e0
addu gp,gp,t9
addiu sp,sp,-0x38
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
sll a1,a1,0x3
lw s2,0x0(a0)
addu s2,s2,a1
lbu s5,0x4(s2)
li v0,0x7
beq s5,v0,0x00031350
_or s0,a3,zero
or s1,a2,zero
or s3,a0,zero
or a1,a3,zero
or a0,a2,zero
lw t9,-0x7dc8(gp)
addiu t9,t9,-0x5e78
bal 0x0002a188
_nop
lw gp,0x10(sp)
or s4,v0,zero
li v0,0x5
beq s5,v0,0x00031494
_slti v0,s4,0x2
beq v0,zero,0x000314e4
_li v0,0x6
b 0x000314f0
_or s4,zero,zero
lw v0,0x4(a2)
addu v1,v0,a3
lbu v1,0x0(v1)
sltiu a0,v1,0xc2
bne a0,zero,0x000314f0
_or s4,zero,zero
addiu t0,a3,0x1
lw a0,0x30(a2)
slt a1,t0,a0
beq a1,zero,0x00031668
_addu a1,v0,a3
sltiu a2,v1,0xe0
bne a2,zero,0x000313f4
_lbu a1,0x1(a1)
sltiu a2,v1,0xf0
beq a2,zero,0x00031420
_sltiu a2,v1,0xf8
li a2,0xe0
beq v1,a2,0x0003140c
_li s4,0x3
addu v1,s4,a3
slt a0,a0,v1
bne a0,zero,0x00031698
_addu t0,v0,t0
lbu v1,0x0(t0)
xori v1,v1,0x80
sltiu v1,v1,0x40
beq v1,zero,0x000316a0
_addiu a0,a3,0x2
addu a0,v0,a0
addu v0,v0,a3
addu v0,v0,s4
lbu v1,0x0(a0)
xori v1,v1,0x80
sltiu v1,v1,0x40
beq v1,zero,0x000316a8
_addiu a0,a0,0x1
bne v0,a0,0x000313d0
_nop
b 0x000314f4
_or v0,s4,zero
xori s4,a1,0x80
sltiu s4,s4,0x40
li v0,0x2
movz v0,zero,s4
b 0x000314f0
_or s4,v0,zero
sltiu a1,a1,0xa0
bne a1,zero,0x00031670
_nop
b 0x000313a0
_li s4,0x3
beq a2,zero,0x00031448
_sltiu a2,v1,0xfc
li a2,0xf0
bne v1,a2,0x000313a0
_li s4,0x4
sltiu a1,a1,0x90
bne a1,zero,0x00031678
_addu v1,s4,a3
b 0x000313a4
_nop
beq a2,zero,0x00031470
_sltiu a2,v1,0xfe
li a2,0xf8
bne v1,a2,0x000313a0
_li s4,0x5
sltiu a1,a1,0x88
bne a1,zero,0x00031680
_addu v1,s4,a3
b 0x000313a4
_nop
beq a2,zero,0x00031688
_li a2,0xfc
bne v1,a2,0x000313a0
_li s4,0x6
sltiu a1,a1,0x84
bne a1,zero,0x00031690
_addu v1,s4,a3
b 0x000313a4
_nop
bne v0,zero,0x000316b0
_nop
lw v0,0x80(s3)
andi v1,v0,0x40
bne v1,zero,0x000314c4
_nop
lw v1,0x4(s1)
addu v1,v1,s0
lbu a0,0x0(v1)
li v1,0xa
beq a0,v1,0x000316b8
_nop
andi v0,v0,0x80
beq v0,zero,0x000314f4
_or v0,s4,zero
lw a3,0x4(s1)
addu s0,a3,s0
lbu v0,0x0(s0)
b 0x000314f0
_movz s4,zero,v0
beq s5,v0,0x00031518
_nop
or s4,zero,zero
or v0,s4,zero
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
lw s3,0x0(s2)
lw v0,0x20(s3)
bne v0,zero,0x00031564
_or a1,s0,zero
lw v0,0x24(s3)
bne v0,zero,0x00031568
_or a0,s1,zero
lw s2,0x14(s3)
beq s2,zero,0x00031614
_lw t9,-0x7dc8(gp)
addiu t9,t9,-0x5df4
bal 0x0002a20c
_nop
lw gp,0x10(sp)
lw a1,0x14(s3)
bgtz a1,0x00031588
_or s2,v0,zero
b 0x00031618
_lw a2,0x20(s3)
or a0,s1,zero
lw t9,-0x7dc8(gp)
addiu t9,t9,-0x5df4
bal 0x0002a20c
_nop
lw gp,0x10(sp)
lw a1,0x14(s3)
blez a1,0x000315c8
_or s2,v0,zero
lw v0,0x0(s3)
lw v1,0x0(v0)
beq s2,v1,0x000315b8
_addiu v0,v0,0x4
or v1,zero,zero
addiu v1,v1,0x1
beq a1,v1,0x000315c8
_addiu v0,v0,0x4
lw a0,-0x4(v0)
bne s2,a0,0x000315a0
_addiu v1,v1,0x1
addiu v1,v1,-0x1
lb v0,0x10(s3)
slti v0,v0,0x0
b 0x000314f0
_movn s4,zero,v0
lw v0,0x24(s3)
blez v0,0x00031614
_nop
or s0,zero,zero
lw v0,0xc(s3)
sll v1,s0,0x2
addu v0,v0,v1
lw a1,0x0(v0)
or a0,s2,zero
lw t9,-0x7c40(gp)
jalr t9
_nop
lw gp,0x10(sp)
bne v0,zero,0x000315b8
_addiu s0,s0,0x1
lw v0,0x24(s3)
slt v0,s0,v0
bne v0,zero,0x000315d8
_nop
lw a2,0x20(s3)
blez a2,0x000316c8
_or v1,zero,zero
b 0x00031634
_lw a0,0x4(s3)
addiu v1,v1,0x1
beq v1,a2,0x000316c8
_addiu a0,a0,0x4
lw v0,0x0(a0)
slt v0,s2,v0
bne v0,zero,0x00031628
_sll a1,v1,0x2
lw v0,0x8(s3)
addu v0,v0,a1
lw v0,0x0(v0)
slt v0,v0,s2
bne v0,zero,0x0003162c
_addiu v1,v1,0x1
addiu v1,v1,-0x1
b 0x000315bc
_lb v0,0x10(s3)
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
b 0x000314f0
_or s4,zero,zero
lb v0,0x10(s3)
bgez v0,0x000316c0
_slt v1,zero,s4
li v0,0x1
b 0x000314f0
_movz s4,v0,v1
(translation_unit "int FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int *param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (expression_statement "puVar9 = (undefined4 *)(*param_1 + param_2 * 8);" (assignment_expression "puVar9 = (undefined4 *)(*param_1 + param_2 * 8)" identifier = (cast_expression "(undefined4 *)(*param_1 + param_2 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + param_2 * 8)" ( (binary_expression "*param_1 + param_2 * 8" (pointer_expression "*param_1" * identifier) + (binary_expression "param_2 * 8" identifier * number_literal)) )))) ;) (expression_statement "cVar4 = *(char *)(puVar9 + 1);" (assignment_expression "cVar4 = *(char *)(puVar9 + 1)" identifier = (pointer_expression "*(char *)(puVar9 + 1)" * (cast_expression "(char *)(puVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) ))))) ;) (if_statement "if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }" if (parenthesized_expression "(cVar4 == '\a')" ( (binary_expression "cVar4 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }" { (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" identifier = (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = *(byte *)(iVar3 + param_4);" (assignment_expression "bVar1 = *(byte *)(iVar3 + param_4)" identifier = (pointer_expression "*(byte *)(iVar3 + param_4)" * (cast_expression "(byte *)(iVar3 + param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4)" ( (binary_expression "iVar3 + param_4" identifier + identifier) ))))) ;) (if_statement "if (bVar1 < 0xc2) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 < 0xc2)" ( (binary_expression "bVar1 < 0xc2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(param_3 + 0x30) <= param_4 + 1)" ( (binary_expression "*(int *)(param_3 + 0x30) <= param_4 + 1" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) <= (binary_expression "param_4 + 1" identifier + number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = *(byte *)(iVar3 + param_4 + 1);" (assignment_expression "bVar2 = *(byte *)(iVar3 + param_4 + 1)" identifier = (pointer_expression "*(byte *)(iVar3 + param_4 + 1)" * (cast_expression "(byte *)(iVar3 + param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + 1)" ( (binary_expression "iVar3 + param_4 + 1" (binary_expression "iVar3 + param_4" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" { (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }" if (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" ( (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" ( (binary_expression "bVar2 ^ 0x80" identifier ^ number_literal) )) < number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }" { (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }" if (parenthesized_expression "(bVar1 == 0xe0)" ( (binary_expression "bVar1 == 0xe0" identifier == number_literal) )) (compound_statement "{\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }" { (if_statement "if (bVar2 < 0xa0) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" identifier = number_literal) ;) })) }) (else_clause "else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (if_statement "if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xf8)" ( (binary_expression "bVar1 < 0xf8" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (expression_statement "iVar10 = 4;" (assignment_expression "iVar10 = 4" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xf0)" ( (binary_expression "bVar1 == 0xf0" identifier == number_literal) )) (compound_statement "{\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar8 = param_4 + 4;" (assignment_expression "iVar8 = param_4 + 4" identifier = (binary_expression "param_4 + 4" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x90) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }) (else_clause "else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (if_statement "if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xfc)" ( (binary_expression "bVar1 < 0xfc" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xf8)" ( (binary_expression "bVar1 == 0xf8" identifier == number_literal) )) (compound_statement "{\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar8 = param_4 + 5;" (assignment_expression "iVar8 = param_4 + 5" identifier = (binary_expression "param_4 + 5" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x88) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (compound_statement "{\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (if_statement "if (0xfd < bVar1) {\n        return 0;\n      }" if (parenthesized_expression "(0xfd < bVar1)" ( (binary_expression "0xfd < bVar1" number_literal < identifier) )) (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 (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xfc)" ( (binary_expression "bVar1 == 0xfc" identifier == number_literal) )) (compound_statement "{\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar8 = param_4 + 6;" (assignment_expression "iVar8 = param_4 + 6" identifier = (binary_expression "param_4 + 6" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x84) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }))))))) (expression_statement "iVar8 = iVar10 + param_4;" (assignment_expression "iVar8 = iVar10 + param_4" identifier = (binary_expression "iVar10 + param_4" identifier + identifier)) ;) (labeled_statement "LAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }" statement_identifier : (if_statement "if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(param_3 + 0x30) < iVar8)" ( (binary_expression "*(int *)(param_3 + 0x30) < iVar8" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) }))) (if_statement "if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }" if (parenthesized_expression "(0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80))" ( (binary_expression "0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)" number_literal < (parenthesized_expression "(*(byte *)(iVar3 + param_4 + 1) ^ 0x80)" ( (binary_expression "*(byte *)(iVar3 + param_4 + 1) ^ 0x80" (pointer_expression "*(byte *)(iVar3 + param_4 + 1)" * (cast_expression "(byte *)(iVar3 + param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + 1)" ( (binary_expression "iVar3 + param_4 + 1" (binary_expression "iVar3 + param_4" identifier + identifier) + number_literal) )))) ^ number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)(iVar3 + param_4 + 2);" (assignment_expression "pbVar6 = (byte *)(iVar3 + param_4 + 2)" identifier = (cast_expression "(byte *)(iVar3 + param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + 2)" ( (binary_expression "iVar3 + param_4 + 2" (binary_expression "iVar3 + param_4" identifier + identifier) + number_literal) )))) ;) (do_statement "do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);" do (compound_statement "{\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    }" { (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }" if (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" ( (binary_expression "0x3f < (bVar1 ^ 0x80)" number_literal < (parenthesized_expression "(bVar1 ^ 0x80)" ( (binary_expression "bVar1 ^ 0x80" identifier ^ number_literal) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "((byte *)(iVar3 + param_4 + iVar10) != pbVar6)" ( (binary_expression "(byte *)(iVar3 + param_4 + iVar10) != pbVar6" (cast_expression "(byte *)(iVar3 + param_4 + iVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + iVar10)" ( (binary_expression "iVar3 + param_4 + iVar10" (binary_expression "iVar3 + param_4" identifier + identifier) + identifier) ))) != identifier) )) ;) (return_statement "return iVar10;" return identifier ;) })) (expression_statement "iVar3 = FUN_0002a188(param_3,param_4);" (assignment_expression "iVar3 = FUN_0002a188(param_3,param_4)" identifier = (call_expression "FUN_0002a188(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (if_statement "if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" if (parenthesized_expression "(cVar4 == '\x05')" ( (binary_expression "cVar4 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" { (if_statement "if (iVar3 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }" if (parenthesized_expression "(((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n'))" ( (binary_expression "((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')" (parenthesized_expression "((param_1[0x20] & 0x40U) == 0)" ( (binary_expression "(param_1[0x20] & 0x40U) == 0" (parenthesized_expression "(param_1[0x20] & 0x40U)" ( (binary_expression "param_1[0x20] & 0x40U" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')" ( (binary_expression "*(char *)(*(int *)(param_3 + 4) + param_4) == '\n'" (pointer_expression "*(char *)(*(int *)(param_3 + 4) + param_4)" * (cast_expression "(char *)(*(int *)(param_3 + 4) + param_4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_3 + 4) + param_4)" ( (binary_expression "*(int *)(param_3 + 4) + param_4" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 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_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }" if (parenthesized_expression "((param_1[0x20] & 0x80U) == 0)" ( (binary_expression "(param_1[0x20] & 0x80U) == 0" (parenthesized_expression "(param_1[0x20] & 0x80U)" ( (binary_expression "param_1[0x20] & 0x80U" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (if_statement "if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(param_3 + 4) + param_4) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_3 + 4) + param_4) != '\0'" (pointer_expression "*(char *)(*(int *)(param_3 + 4) + param_4)" * (cast_expression "(char *)(*(int *)(param_3 + 4) + param_4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_3 + 4) + param_4)" ( (binary_expression "*(int *)(param_3 + 4) + param_4" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar3 < 2) {\n    return 0;\n  }" if (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (cVar4 != '\x06') {\n    return 0;\n  }" if (parenthesized_expression "(cVar4 != '\x06')" ( (binary_expression "cVar4 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar11 = (int *)*puVar9;" (assignment_expression "piVar11 = (int *)*puVar9" identifier = (cast_expression "(int *)*puVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" if (parenthesized_expression "((piVar11[8] == 0) && (piVar11[9] == 0))" ( (binary_expression "(piVar11[8] == 0) && (piVar11[9] == 0)" (parenthesized_expression "(piVar11[8] == 0)" ( (binary_expression "piVar11[8] == 0" (subscript_expression "piVar11[8]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(piVar11[9] == 0)" ( (binary_expression "piVar11[9] == 0" (subscript_expression "piVar11[9]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }" { (expression_statement "iVar10 = piVar11[5];" (assignment_expression "iVar10 = piVar11[5]" identifier = (subscript_expression "piVar11[5]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }" { (expression_statement "iVar10 = FUN_0002a20c(param_3,param_4);" (assignment_expression "iVar10 = FUN_0002a20c(param_3,param_4)" identifier = (call_expression "FUN_0002a20c(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = piVar11[5];" (assignment_expression "iVar8 = piVar11[5]" identifier = (subscript_expression "piVar11[5]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar8) goto LAB_00031588;" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (goto_statement "goto LAB_00031588;" goto statement_identifier ;)) (expression_statement "iVar8 = piVar11[8];" (assignment_expression "iVar8 = piVar11[8]" identifier = (subscript_expression "piVar11[8]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00031618;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" else (compound_statement "{\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" { (expression_statement "iVar10 = FUN_0002a20c(param_3,param_4);" (assignment_expression "iVar10 = FUN_0002a20c(param_3,param_4)" identifier = (call_expression "FUN_0002a20c(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = piVar11[5];" (assignment_expression "iVar8 = piVar11[5]" identifier = (subscript_expression "piVar11[5]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }" { (labeled_statement "LAB_00031588:\n      piVar7 = (int *)*piVar11;" statement_identifier : (expression_statement "piVar7 = (int *)*piVar11;" (assignment_expression "piVar7 = (int *)*piVar11" identifier = (cast_expression "(int *)*piVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;)) (if_statement "if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }" if (parenthesized_expression "(iVar10 != *piVar7)" ( (binary_expression "iVar10 != *piVar7" identifier != (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);" do (compound_statement "{\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar5) goto LAB_000315c8;" if (parenthesized_expression "(iVar8 == iVar5)" ( (binary_expression "iVar8 == iVar5" identifier == identifier) )) (goto_statement "goto LAB_000315c8;" goto statement_identifier ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != *piVar7)" ( (binary_expression "iVar10 != *piVar7" identifier != (pointer_expression "*piVar7" * identifier)) )) ;) })) (labeled_statement "LAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);" statement_identifier : (expression_statement "cVar4 = *(char *)(piVar11 + 4);" (assignment_expression "cVar4 = *(char *)(piVar11 + 4)" identifier = (pointer_expression "*(char *)(piVar11 + 4)" * (cast_expression "(char *)(piVar11 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 4)" ( (binary_expression "piVar11 + 4" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }" statement_identifier : (if_statement "if (-1 < cVar4) {\n        return iVar3;\n      }" if (parenthesized_expression "(-1 < cVar4)" ( (binary_expression "-1 < cVar4" number_literal < identifier) )) (compound_statement "{\n        return iVar3;\n      }" { (return_statement "return iVar3;" return identifier ;) }))) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" statement_identifier : (if_statement "if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" if (parenthesized_expression "(0 < piVar11[9])" ( (binary_expression "0 < piVar11[9]" number_literal < (subscript_expression "piVar11[9]" identifier [ number_literal ])) )) (compound_statement "{\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);" do (compound_statement "{\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      }" { (expression_statement "iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));" (assignment_expression "iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" identifier = (call_expression "(*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" (parenthesized_expression "(*(code *)PTR_iswctype_000554a0)" ( (pointer_expression "*(code *)PTR_iswctype_000554a0" * (cast_expression "(code *)PTR_iswctype_000554a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" ( identifier , (pointer_expression "*(undefined4 *)(piVar11[3] + iVar8 * 4)" * (cast_expression "(undefined4 *)(piVar11[3] + iVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[3] + iVar8 * 4)" ( (binary_expression "piVar11[3] + iVar8 * 4" (subscript_expression "piVar11[3]" identifier [ number_literal ]) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 != 0) goto LAB_000315b8;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000315b8;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar8 < piVar11[9])" ( (binary_expression "iVar8 < piVar11[9]" identifier < (subscript_expression "piVar11[9]" identifier [ number_literal ])) )) ;) }))) }))) (expression_statement "iVar8 = piVar11[8];" (assignment_expression "iVar8 = piVar11[8]" identifier = (subscript_expression "piVar11[8]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00031618:\n  iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (if_statement "if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }" { (expression_statement "piVar7 = (int *)piVar11[1];" (assignment_expression "piVar7 = (int *)piVar11[1]" identifier = (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);" do (compound_statement "{\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    }" { (if_statement "if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }" if (parenthesized_expression "((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4)))" ( (binary_expression "(*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))" (parenthesized_expression "(*piVar7 <= iVar10)" ( (binary_expression "*piVar7 <= iVar10" (pointer_expression "*piVar7" * identifier) <= identifier) )) && (parenthesized_expression "(iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))" ( (binary_expression "iVar10 <= *(int *)(piVar11[2] + iVar5 * 4)" identifier <= (pointer_expression "*(int *)(piVar11[2] + iVar5 * 4)" * (cast_expression "(int *)(piVar11[2] + iVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[2] + iVar5 * 4)" ( (binary_expression "piVar11[2] + iVar5 * 4" (subscript_expression "piVar11[2]" identifier [ number_literal ]) + (binary_expression "iVar5 * 4" identifier * number_literal)) ))))) ))) )) (compound_statement "{\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }" { (expression_statement "cVar4 = *(char *)(piVar11 + 4);" (assignment_expression "cVar4 = *(char *)(piVar11 + 4)" identifier = (pointer_expression "*(char *)(piVar11 + 4)" * (cast_expression "(char *)(piVar11 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 4)" ( (binary_expression "piVar11 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000315bc;" goto statement_identifier ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != iVar8)" ( (binary_expression "iVar5 != iVar8" identifier != identifier) )) ;) })) (if_statement "if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }" if (parenthesized_expression "(*(char *)(piVar11 + 4) < '\0')" ( (binary_expression "*(char *)(piVar11 + 4) < '\0'" (pointer_expression "*(char *)(piVar11 + 4)" * (cast_expression "(char *)(piVar11 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 4)" ( (binary_expression "piVar11 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }" { (if_statement "if (iVar3 < 1) {\n      iVar3 = 1;\n    }" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 1;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n    iVar3 = 0;\n  }" else (compound_statement "{\n    iVar3 = 0;\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int check_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  uchar *puVar4;\n  wint_t *pwVar5;\n  char cVar7;\n  int iVar6;\n  bitset_word_t bVar8;\n  byte *pbVar9;\n  int *piVar10;\n  bitset_word_t bVar11;\n  int iVar12;\n  re_token_t *prVar13;\n  wint_t wVar14;\n  re_bitset_ptr_t pbVar15;\n  \n  prVar13 = dfa->nodes;\n  cVar7 = prVar13[node_idx].field_0x4;\n  if (cVar7 == '\a') {\n    puVar4 = input->mbs;\n    bVar1 = puVar4[str_idx];\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (input->len <= str_idx + 1) {\n      return 0;\n    }\n    bVar2 = puVar4[str_idx + 1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar12 = iVar3 + str_idx;\nLAB_000313a4:\n    if (input->len < iVar12) {\n      return 0;\n    }\n    if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {\n      return 0;\n    }\n    pbVar9 = puVar4 + str_idx + 2;\n    do {\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while (puVar4 + iVar3 + str_idx != pbVar9);\n    return iVar3;\n  }\n  iVar3 = re_string_char_size_at(input,str_idx);\n  if (cVar7 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {\n      return 0;\n    }\n    if ((dfa->syntax & 0x80) == 0) {\n      return iVar3;\n    }\n    if (input->mbs[str_idx] != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar7 != '\x06') {\n    return 0;\n  }\n  pbVar15 = prVar13[node_idx].opr.sbcset;\n  if ((pbVar15[8] == 0) && (pbVar15[9] == 0)) {\n    wVar14 = pbVar15[5];\n    if (wVar14 != 0) {\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    wVar14 = re_string_wchar_at(input,str_idx);\n    bVar11 = pbVar15[5];\n    if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }\n  }\n  bVar11 = pbVar15[8];\nLAB_00031618:\n  bVar8 = 0;\n  if (0 < (int)bVar11) {\n    piVar10 = (int *)pbVar15[1];\n    do {\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    } while (bVar8 != bVar11);\n  }\n  if (*(char *)(pbVar15 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}\n\n" (function_definition "int check_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  uchar *puVar4;\n  wint_t *pwVar5;\n  char cVar7;\n  int iVar6;\n  bitset_word_t bVar8;\n  byte *pbVar9;\n  int *piVar10;\n  bitset_word_t bVar11;\n  int iVar12;\n  re_token_t *prVar13;\n  wint_t wVar14;\n  re_bitset_ptr_t pbVar15;\n  \n  prVar13 = dfa->nodes;\n  cVar7 = prVar13[node_idx].field_0x4;\n  if (cVar7 == '\a') {\n    puVar4 = input->mbs;\n    bVar1 = puVar4[str_idx];\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (input->len <= str_idx + 1) {\n      return 0;\n    }\n    bVar2 = puVar4[str_idx + 1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar12 = iVar3 + str_idx;\nLAB_000313a4:\n    if (input->len < iVar12) {\n      return 0;\n    }\n    if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {\n      return 0;\n    }\n    pbVar9 = puVar4 + str_idx + 2;\n    do {\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while (puVar4 + iVar3 + str_idx != pbVar9);\n    return iVar3;\n  }\n  iVar3 = re_string_char_size_at(input,str_idx);\n  if (cVar7 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {\n      return 0;\n    }\n    if ((dfa->syntax & 0x80) == 0) {\n      return iVar3;\n    }\n    if (input->mbs[str_idx] != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar7 != '\x06') {\n    return 0;\n  }\n  pbVar15 = prVar13[node_idx].opr.sbcset;\n  if ((pbVar15[8] == 0) && (pbVar15[9] == 0)) {\n    wVar14 = pbVar15[5];\n    if (wVar14 != 0) {\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    wVar14 = re_string_wchar_at(input,str_idx);\n    bVar11 = pbVar15[5];\n    if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }\n  }\n  bVar11 = pbVar15[8];\nLAB_00031618:\n  bVar8 = 0;\n  if (0 < (int)bVar11) {\n    piVar10 = (int *)pbVar15[1];\n    do {\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    } while (bVar8 != bVar11);\n  }\n  if (*(char *)(pbVar15 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "check_node_accept_bytes(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx)" identifier (parameter_list "(re_dfa_t *dfa,Idx node_idx,re_string_t *input,Idx str_idx)" ( (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) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  uchar *puVar4;\n  wint_t *pwVar5;\n  char cVar7;\n  int iVar6;\n  bitset_word_t bVar8;\n  byte *pbVar9;\n  int *piVar10;\n  bitset_word_t bVar11;\n  int iVar12;\n  re_token_t *prVar13;\n  wint_t wVar14;\n  re_bitset_ptr_t pbVar15;\n  \n  prVar13 = dfa->nodes;\n  cVar7 = prVar13[node_idx].field_0x4;\n  if (cVar7 == '\a') {\n    puVar4 = input->mbs;\n    bVar1 = puVar4[str_idx];\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (input->len <= str_idx + 1) {\n      return 0;\n    }\n    bVar2 = puVar4[str_idx + 1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar12 = iVar3 + str_idx;\nLAB_000313a4:\n    if (input->len < iVar12) {\n      return 0;\n    }\n    if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {\n      return 0;\n    }\n    pbVar9 = puVar4 + str_idx + 2;\n    do {\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while (puVar4 + iVar3 + str_idx != pbVar9);\n    return iVar3;\n  }\n  iVar3 = re_string_char_size_at(input,str_idx);\n  if (cVar7 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {\n      return 0;\n    }\n    if ((dfa->syntax & 0x80) == 0) {\n      return iVar3;\n    }\n    if (input->mbs[str_idx] != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar7 != '\x06') {\n    return 0;\n  }\n  pbVar15 = prVar13[node_idx].opr.sbcset;\n  if ((pbVar15[8] == 0) && (pbVar15[9] == 0)) {\n    wVar14 = pbVar15[5];\n    if (wVar14 != 0) {\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    wVar14 = re_string_wchar_at(input,str_idx);\n    bVar11 = pbVar15[5];\n    if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }\n  }\n  bVar11 = pbVar15[8];\nLAB_00031618:\n  bVar8 = 0;\n  if (0 < (int)bVar11) {\n    piVar10 = (int *)pbVar15[1];\n    do {\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    } while (bVar8 != bVar11);\n  }\n  if (*(char *)(pbVar15 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "wint_t *pwVar5;" type_identifier (pointer_declarator "*pwVar5" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "bitset_word_t bVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "bitset_word_t bVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "re_token_t *prVar13;" type_identifier (pointer_declarator "*prVar13" * identifier) ;) (declaration "wint_t wVar14;" type_identifier identifier ;) (declaration "re_bitset_ptr_t pbVar15;" type_identifier identifier ;) (expression_statement "prVar13 = dfa->nodes;" (assignment_expression "prVar13 = dfa->nodes" identifier = (field_expression "dfa->nodes" identifier -> field_identifier)) ;) (expression_statement "cVar7 = prVar13[node_idx].field_0x4;" (assignment_expression "cVar7 = prVar13[node_idx].field_0x4" identifier = (field_expression "prVar13[node_idx].field_0x4" (subscript_expression "prVar13[node_idx]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (cVar7 == '\a') {\n    puVar4 = input->mbs;\n    bVar1 = puVar4[str_idx];\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (input->len <= str_idx + 1) {\n      return 0;\n    }\n    bVar2 = puVar4[str_idx + 1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar12 = iVar3 + str_idx;\nLAB_000313a4:\n    if (input->len < iVar12) {\n      return 0;\n    }\n    if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {\n      return 0;\n    }\n    pbVar9 = puVar4 + str_idx + 2;\n    do {\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while (puVar4 + iVar3 + str_idx != pbVar9);\n    return iVar3;\n  }" if (parenthesized_expression "(cVar7 == '\a')" ( (binary_expression "cVar7 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    puVar4 = input->mbs;\n    bVar1 = puVar4[str_idx];\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (input->len <= str_idx + 1) {\n      return 0;\n    }\n    bVar2 = puVar4[str_idx + 1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar12 = iVar3 + str_idx;\nLAB_000313a4:\n    if (input->len < iVar12) {\n      return 0;\n    }\n    if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {\n      return 0;\n    }\n    pbVar9 = puVar4 + str_idx + 2;\n    do {\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while (puVar4 + iVar3 + str_idx != pbVar9);\n    return iVar3;\n  }" { (expression_statement "puVar4 = input->mbs;" (assignment_expression "puVar4 = input->mbs" identifier = (field_expression "input->mbs" identifier -> field_identifier)) ;) (expression_statement "bVar1 = puVar4[str_idx];" (assignment_expression "bVar1 = puVar4[str_idx]" identifier = (subscript_expression "puVar4[str_idx]" identifier [ identifier ])) ;) (if_statement "if (bVar1 < 0xc2) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 < 0xc2)" ( (binary_expression "bVar1 < 0xc2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (input->len <= str_idx + 1) {\n      return 0;\n    }" if (parenthesized_expression "(input->len <= str_idx + 1)" ( (binary_expression "input->len <= str_idx + 1" (field_expression "input->len" identifier -> field_identifier) <= (binary_expression "str_idx + 1" identifier + number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = puVar4[str_idx + 1];" (assignment_expression "bVar2 = puVar4[str_idx + 1]" identifier = (subscript_expression "puVar4[str_idx + 1]" identifier [ (binary_expression "str_idx + 1" identifier + number_literal) ])) ;) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" { (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }" if (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" ( (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" ( (binary_expression "bVar2 ^ 0x80" identifier ^ number_literal) )) < number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (bVar1 < 0xf0) {\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }\n    }" { (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }" if (parenthesized_expression "(bVar1 == 0xe0)" ( (binary_expression "bVar1 == 0xe0" identifier == number_literal) )) (compound_statement "{\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar3 = 3;\n      }" { (if_statement "if (bVar2 < 0xa0) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" identifier = number_literal) ;) })) }) (else_clause "else if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (if_statement "if (bVar1 < 0xf8) {\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xf8)" ( (binary_expression "bVar1 < 0xf8" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 4;\n      if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xf0) {\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xf0)" ( (binary_expression "bVar1 == 0xf0" identifier == number_literal) )) (compound_statement "{\n        iVar12 = str_idx + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar12 = str_idx + 4;" (assignment_expression "iVar12 = str_idx + 4" identifier = (binary_expression "str_idx + 4" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x90) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }) (else_clause "else if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (if_statement "if (bVar1 < 0xfc) {\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xfc)" ( (binary_expression "bVar1 < 0xfc" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 5;\n      if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xf8) {\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xf8)" ( (binary_expression "bVar1 == 0xf8" identifier == number_literal) )) (compound_statement "{\n        iVar12 = str_idx + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar12 = str_idx + 5;" (assignment_expression "iVar12 = str_idx + 5" identifier = (binary_expression "str_idx + 5" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x88) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (compound_statement "{\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar3 = 6;\n      if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (if_statement "if (0xfd < bVar1) {\n        return 0;\n      }" if (parenthesized_expression "(0xfd < bVar1)" ( (binary_expression "0xfd < bVar1" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = 6;" (assignment_expression "iVar3 = 6" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xfc) {\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xfc)" ( (binary_expression "bVar1 == 0xfc" identifier == number_literal) )) (compound_statement "{\n        iVar12 = str_idx + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar12 = str_idx + 6;" (assignment_expression "iVar12 = str_idx + 6" identifier = (binary_expression "str_idx + 6" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x84) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }))))))) (expression_statement "iVar12 = iVar3 + str_idx;" (assignment_expression "iVar12 = iVar3 + str_idx" identifier = (binary_expression "iVar3 + str_idx" identifier + identifier)) ;) (labeled_statement "LAB_000313a4:\n    if (input->len < iVar12) {\n      return 0;\n    }" statement_identifier : (if_statement "if (input->len < iVar12) {\n      return 0;\n    }" if (parenthesized_expression "(input->len < iVar12)" ( (binary_expression "input->len < iVar12" (field_expression "input->len" identifier -> field_identifier) < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) }))) (if_statement "if (0x3f < (puVar4[str_idx + 1] ^ 0x80)) {\n      return 0;\n    }" if (parenthesized_expression "(0x3f < (puVar4[str_idx + 1] ^ 0x80))" ( (binary_expression "0x3f < (puVar4[str_idx + 1] ^ 0x80)" number_literal < (parenthesized_expression "(puVar4[str_idx + 1] ^ 0x80)" ( (binary_expression "puVar4[str_idx + 1] ^ 0x80" (subscript_expression "puVar4[str_idx + 1]" identifier [ (binary_expression "str_idx + 1" identifier + number_literal) ]) ^ number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar9 = puVar4 + str_idx + 2;" (assignment_expression "pbVar9 = puVar4 + str_idx + 2" identifier = (binary_expression "puVar4 + str_idx + 2" (binary_expression "puVar4 + str_idx" identifier + identifier) + number_literal)) ;) (do_statement "do {\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while (puVar4 + iVar3 + str_idx != pbVar9);" do (compound_statement "{\n      bVar1 = *pbVar9;\n      pbVar9 = pbVar9 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    }" { (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }" if (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" ( (binary_expression "0x3f < (bVar1 ^ 0x80)" number_literal < (parenthesized_expression "(bVar1 ^ 0x80)" ( (binary_expression "bVar1 ^ 0x80" identifier ^ number_literal) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "(puVar4 + iVar3 + str_idx != pbVar9)" ( (binary_expression "puVar4 + iVar3 + str_idx != pbVar9" (binary_expression "puVar4 + iVar3 + str_idx" (binary_expression "puVar4 + iVar3" identifier + identifier) + identifier) != identifier) )) ;) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = re_string_char_size_at(input,str_idx);" (assignment_expression "iVar3 = re_string_char_size_at(input,str_idx)" identifier = (call_expression "re_string_char_size_at(input,str_idx)" identifier (argument_list "(input,str_idx)" ( identifier , identifier )))) ;) (if_statement "if (cVar7 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {\n      return 0;\n    }\n    if ((dfa->syntax & 0x80) == 0) {\n      return iVar3;\n    }\n    if (input->mbs[str_idx] != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" if (parenthesized_expression "(cVar7 == '\x05')" ( (binary_expression "cVar7 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {\n      return 0;\n    }\n    if ((dfa->syntax & 0x80) == 0) {\n      return iVar3;\n    }\n    if (input->mbs[str_idx] != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" { (if_statement "if (iVar3 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')) {\n      return 0;\n    }" if (parenthesized_expression "(((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n'))" ( (binary_expression "((dfa->syntax & 0x40) == 0) && (input->mbs[str_idx] == '\n')" (parenthesized_expression "((dfa->syntax & 0x40) == 0)" ( (binary_expression "(dfa->syntax & 0x40) == 0" (parenthesized_expression "(dfa->syntax & 0x40)" ( (binary_expression "dfa->syntax & 0x40" (field_expression "dfa->syntax" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(input->mbs[str_idx] == '\n')" ( (binary_expression "input->mbs[str_idx] == '\n'" (subscript_expression "input->mbs[str_idx]" (field_expression "input->mbs" identifier -> field_identifier) [ identifier ]) == (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((dfa->syntax & 0x80) == 0) {\n      return iVar3;\n    }" if (parenthesized_expression "((dfa->syntax & 0x80) == 0)" ( (binary_expression "(dfa->syntax & 0x80) == 0" (parenthesized_expression "(dfa->syntax & 0x80)" ( (binary_expression "dfa->syntax & 0x80" (field_expression "dfa->syntax" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (if_statement "if (input->mbs[str_idx] != '\0') {\n      return iVar3;\n    }" if (parenthesized_expression "(input->mbs[str_idx] != '\0')" ( (binary_expression "input->mbs[str_idx] != '\0'" (subscript_expression "input->mbs[str_idx]" (field_expression "input->mbs" identifier -> field_identifier) [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar3 < 2) {\n    return 0;\n  }" if (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (cVar7 != '\x06') {\n    return 0;\n  }" if (parenthesized_expression "(cVar7 != '\x06')" ( (binary_expression "cVar7 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar15 = prVar13[node_idx].opr.sbcset;" (assignment_expression "pbVar15 = prVar13[node_idx].opr.sbcset" identifier = (field_expression "prVar13[node_idx].opr.sbcset" (field_expression "prVar13[node_idx].opr" (subscript_expression "prVar13[node_idx]" identifier [ identifier ]) . field_identifier) . field_identifier)) ;) (if_statement "if ((pbVar15[8] == 0) && (pbVar15[9] == 0)) {\n    wVar14 = pbVar15[5];\n    if (wVar14 != 0) {\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    wVar14 = re_string_wchar_at(input,str_idx);\n    bVar11 = pbVar15[5];\n    if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }\n  }" if (parenthesized_expression "((pbVar15[8] == 0) && (pbVar15[9] == 0))" ( (binary_expression "(pbVar15[8] == 0) && (pbVar15[9] == 0)" (parenthesized_expression "(pbVar15[8] == 0)" ( (binary_expression "pbVar15[8] == 0" (subscript_expression "pbVar15[8]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(pbVar15[9] == 0)" ( (binary_expression "pbVar15[9] == 0" (subscript_expression "pbVar15[9]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    wVar14 = pbVar15[5];\n    if (wVar14 != 0) {\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }\n  }" { (expression_statement "wVar14 = pbVar15[5];" (assignment_expression "wVar14 = pbVar15[5]" identifier = (subscript_expression "pbVar15[5]" identifier [ number_literal ])) ;) (if_statement "if (wVar14 != 0) {\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }" if (parenthesized_expression "(wVar14 != 0)" ( (binary_expression "wVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      wVar14 = re_string_wchar_at(input,str_idx);\n      bVar11 = pbVar15[5];\n      if (0 < (int)bVar11) goto LAB_00031588;\n      bVar11 = pbVar15[8];\n      goto LAB_00031618;\n    }" { (expression_statement "wVar14 = re_string_wchar_at(input,str_idx);" (assignment_expression "wVar14 = re_string_wchar_at(input,str_idx)" identifier = (call_expression "re_string_wchar_at(input,str_idx)" identifier (argument_list "(input,str_idx)" ( identifier , identifier )))) ;) (expression_statement "bVar11 = pbVar15[5];" (assignment_expression "bVar11 = pbVar15[5]" identifier = (subscript_expression "pbVar15[5]" identifier [ number_literal ])) ;) (if_statement "if (0 < (int)bVar11) goto LAB_00031588;" if (parenthesized_expression "(0 < (int)bVar11)" ( (binary_expression "0 < (int)bVar11" number_literal < (cast_expression "(int)bVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00031588;" goto statement_identifier ;)) (expression_statement "bVar11 = pbVar15[8];" (assignment_expression "bVar11 = pbVar15[8]" identifier = (subscript_expression "pbVar15[8]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00031618;" goto statement_identifier ;) })) }) (else_clause "else {\n    wVar14 = re_string_wchar_at(input,str_idx);\n    bVar11 = pbVar15[5];\n    if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }\n  }" else (compound_statement "{\n    wVar14 = re_string_wchar_at(input,str_idx);\n    bVar11 = pbVar15[5];\n    if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }\n  }" { (expression_statement "wVar14 = re_string_wchar_at(input,str_idx);" (assignment_expression "wVar14 = re_string_wchar_at(input,str_idx)" identifier = (call_expression "re_string_wchar_at(input,str_idx)" identifier (argument_list "(input,str_idx)" ( identifier , identifier )))) ;) (expression_statement "bVar11 = pbVar15[5];" (assignment_expression "bVar11 = pbVar15[5]" identifier = (subscript_expression "pbVar15[5]" identifier [ number_literal ])) ;) (if_statement "if (0 < (int)bVar11) {\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }" if (parenthesized_expression "(0 < (int)bVar11)" ( (binary_expression "0 < (int)bVar11" number_literal < (cast_expression "(int)bVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;\n      if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }\nLAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);\nLAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }\n      return 0;\n    }" { (labeled_statement "LAB_00031588:\n      pwVar5 = (wint_t *)*pbVar15;" statement_identifier : (expression_statement "pwVar5 = (wint_t *)*pbVar15;" (assignment_expression "pwVar5 = (wint_t *)*pbVar15" identifier = (cast_expression "(wint_t *)*pbVar15" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pbVar15" * identifier))) ;)) (if_statement "if (wVar14 != *pwVar5) {\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }" if (parenthesized_expression "(wVar14 != *pwVar5)" ( (binary_expression "wVar14 != *pwVar5" identifier != (pointer_expression "*pwVar5" * identifier)) )) (compound_statement "{\n        bVar8 = 1;\n        do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);\n      }" { (expression_statement "bVar8 = 1;" (assignment_expression "bVar8 = 1" identifier = number_literal) ;) (do_statement "do {\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        } while (wVar14 != *pwVar5);" do (compound_statement "{\n          pwVar5 = pwVar5 + 1;\n          if (bVar11 == bVar8) goto LAB_000315c8;\n          bVar8 = bVar8 + 1;\n        }" { (expression_statement "pwVar5 = pwVar5 + 1;" (assignment_expression "pwVar5 = pwVar5 + 1" identifier = (binary_expression "pwVar5 + 1" identifier + number_literal)) ;) (if_statement "if (bVar11 == bVar8) goto LAB_000315c8;" if (parenthesized_expression "(bVar11 == bVar8)" ( (binary_expression "bVar11 == bVar8" identifier == identifier) )) (goto_statement "goto LAB_000315c8;" goto statement_identifier ;)) (expression_statement "bVar8 = bVar8 + 1;" (assignment_expression "bVar8 = bVar8 + 1" identifier = (binary_expression "bVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(wVar14 != *pwVar5)" ( (binary_expression "wVar14 != *pwVar5" identifier != (pointer_expression "*pwVar5" * identifier)) )) ;) })) (labeled_statement "LAB_000315b8:\n      cVar7 = *(char *)(pbVar15 + 4);" statement_identifier : (expression_statement "cVar7 = *(char *)(pbVar15 + 4);" (assignment_expression "cVar7 = *(char *)(pbVar15 + 4)" identifier = (pointer_expression "*(char *)(pbVar15 + 4)" * (cast_expression "(char *)(pbVar15 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15 + 4)" ( (binary_expression "pbVar15 + 4" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_000315bc:\n      if (-1 < cVar7) {\n        return iVar3;\n      }" statement_identifier : (if_statement "if (-1 < cVar7) {\n        return iVar3;\n      }" if (parenthesized_expression "(-1 < cVar7)" ( (binary_expression "-1 < cVar7" number_literal < identifier) )) (compound_statement "{\n        return iVar3;\n      }" { (return_statement "return iVar3;" return identifier ;) }))) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_000315c8:\n    if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }" statement_identifier : (if_statement "if (0 < (int)pbVar15[9]) {\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }" if (parenthesized_expression "(0 < (int)pbVar15[9])" ( (binary_expression "0 < (int)pbVar15[9]" number_literal < (cast_expression "(int)pbVar15[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pbVar15[9]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar12 = 0;\n      do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);\n    }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      } while (iVar12 < (int)pbVar15[9]);" do (compound_statement "{\n        iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));\n        iVar12 = iVar12 + 1;\n        if (iVar6 != 0) goto LAB_000315b8;\n      }" { (expression_statement "iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4));" (assignment_expression "iVar6 = (*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4))" identifier = (call_expression "(*(code *)PTR_iswctype_000554a0)(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4))" (parenthesized_expression "(*(code *)PTR_iswctype_000554a0)" ( (pointer_expression "*(code *)PTR_iswctype_000554a0" * (cast_expression "(code *)PTR_iswctype_000554a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(wVar14,*(undefined4 *)(pbVar15[3] + iVar12 * 4))" ( identifier , (pointer_expression "*(undefined4 *)(pbVar15[3] + iVar12 * 4)" * (cast_expression "(undefined4 *)(pbVar15[3] + iVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15[3] + iVar12 * 4)" ( (binary_expression "pbVar15[3] + iVar12 * 4" (subscript_expression "pbVar15[3]" identifier [ number_literal ]) + (binary_expression "iVar12 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 != 0) goto LAB_000315b8;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000315b8;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar12 < (int)pbVar15[9])" ( (binary_expression "iVar12 < (int)pbVar15[9]" identifier < (cast_expression "(int)pbVar15[9]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pbVar15[9]" identifier [ number_literal ]))) )) ;) }))) }))) (expression_statement "bVar11 = pbVar15[8];" (assignment_expression "bVar11 = pbVar15[8]" identifier = (subscript_expression "pbVar15[8]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00031618:\n  bVar8 = 0;" statement_identifier : (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;)) (if_statement "if (0 < (int)bVar11) {\n    piVar10 = (int *)pbVar15[1];\n    do {\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    } while (bVar8 != bVar11);\n  }" if (parenthesized_expression "(0 < (int)bVar11)" ( (binary_expression "0 < (int)bVar11" number_literal < (cast_expression "(int)bVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    piVar10 = (int *)pbVar15[1];\n    do {\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    } while (bVar8 != bVar11);\n  }" { (expression_statement "piVar10 = (int *)pbVar15[1];" (assignment_expression "piVar10 = (int *)pbVar15[1]" identifier = (cast_expression "(int *)pbVar15[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pbVar15[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    } while (bVar8 != bVar11);" do (compound_statement "{\n      if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }\n      bVar8 = bVar8 + 1;\n      piVar10 = piVar10 + 1;\n    }" { (if_statement "if ((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))) {\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }" if (parenthesized_expression "((*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4)))" ( (binary_expression "(*piVar10 <= (int)wVar14) && ((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))" (parenthesized_expression "(*piVar10 <= (int)wVar14)" ( (binary_expression "*piVar10 <= (int)wVar14" (pointer_expression "*piVar10" * identifier) <= (cast_expression "(int)wVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4))" ( (binary_expression "(int)wVar14 <= *(int *)(pbVar15[2] + bVar8 * 4)" (cast_expression "(int)wVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*(int *)(pbVar15[2] + bVar8 * 4)" * (cast_expression "(int *)(pbVar15[2] + bVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15[2] + bVar8 * 4)" ( (binary_expression "pbVar15[2] + bVar8 * 4" (subscript_expression "pbVar15[2]" identifier [ number_literal ]) + (binary_expression "bVar8 * 4" identifier * number_literal)) ))))) ))) )) (compound_statement "{\n        cVar7 = *(char *)(pbVar15 + 4);\n        goto LAB_000315bc;\n      }" { (expression_statement "cVar7 = *(char *)(pbVar15 + 4);" (assignment_expression "cVar7 = *(char *)(pbVar15 + 4)" identifier = (pointer_expression "*(char *)(pbVar15 + 4)" * (cast_expression "(char *)(pbVar15 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15 + 4)" ( (binary_expression "pbVar15 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000315bc;" goto statement_identifier ;) })) (expression_statement "bVar8 = bVar8 + 1;" (assignment_expression "bVar8 = bVar8 + 1" identifier = (binary_expression "bVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar8 != bVar11)" ( (binary_expression "bVar8 != bVar11" identifier != identifier) )) ;) })) (if_statement "if (*(char *)(pbVar15 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }" if (parenthesized_expression "(*(char *)(pbVar15 + 4) < '\0')" ( (binary_expression "*(char *)(pbVar15 + 4) < '\0'" (pointer_expression "*(char *)(pbVar15 + 4)" * (cast_expression "(char *)(pbVar15 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15 + 4)" ( (binary_expression "pbVar15 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }" { (if_statement "if (iVar3 < 1) {\n      iVar3 = 1;\n    }" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 1;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n    iVar3 = 0;\n  }" else (compound_statement "{\n    iVar3 = 0;\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int *param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (expression_statement "puVar9 = (undefined4 *)(*param_1 + param_2 * 8);" (assignment_expression "puVar9 = (undefined4 *)(*param_1 + param_2 * 8)" identifier = (cast_expression "(undefined4 *)(*param_1 + param_2 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + param_2 * 8)" ( (binary_expression "*param_1 + param_2 * 8" (pointer_expression "*param_1" * identifier) + (binary_expression "param_2 * 8" identifier * number_literal)) )))) ;) (expression_statement "cVar4 = *(char *)(puVar9 + 1);" (assignment_expression "cVar4 = *(char *)(puVar9 + 1)" identifier = (pointer_expression "*(char *)(puVar9 + 1)" * (cast_expression "(char *)(puVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) ))))) ;) (if_statement "if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }" if (parenthesized_expression "(cVar4 == '\a')" ( (binary_expression "cVar4 == '\a'" identifier == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }" { (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" identifier = (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = *(byte *)(iVar3 + param_4);" (assignment_expression "bVar1 = *(byte *)(iVar3 + param_4)" identifier = (pointer_expression "*(byte *)(iVar3 + param_4)" * (cast_expression "(byte *)(iVar3 + param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4)" ( (binary_expression "iVar3 + param_4" identifier + identifier) ))))) ;) (if_statement "if (bVar1 < 0xc2) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 < 0xc2)" ( (binary_expression "bVar1 < 0xc2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(param_3 + 0x30) <= param_4 + 1)" ( (binary_expression "*(int *)(param_3 + 0x30) <= param_4 + 1" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) <= (binary_expression "param_4 + 1" identifier + number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = *(byte *)(iVar3 + param_4 + 1);" (assignment_expression "bVar2 = *(byte *)(iVar3 + param_4 + 1)" identifier = (pointer_expression "*(byte *)(iVar3 + param_4 + 1)" * (cast_expression "(byte *)(iVar3 + param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + 1)" ( (binary_expression "iVar3 + param_4 + 1" (binary_expression "iVar3 + param_4" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" { (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }" if (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" ( (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" ( (binary_expression "bVar2 ^ 0x80" identifier ^ number_literal) )) < number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }" { (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }" if (parenthesized_expression "(bVar1 == 0xe0)" ( (binary_expression "bVar1 == 0xe0" identifier == number_literal) )) (compound_statement "{\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }" { (if_statement "if (bVar2 < 0xa0) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" identifier = number_literal) ;) })) }) (else_clause "else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (if_statement "if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xf8)" ( (binary_expression "bVar1 < 0xf8" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (expression_statement "iVar10 = 4;" (assignment_expression "iVar10 = 4" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xf0)" ( (binary_expression "bVar1 == 0xf0" identifier == number_literal) )) (compound_statement "{\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar8 = param_4 + 4;" (assignment_expression "iVar8 = param_4 + 4" identifier = (binary_expression "param_4 + 4" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x90) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }) (else_clause "else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (if_statement "if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xfc)" ( (binary_expression "bVar1 < 0xfc" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" identifier = number_literal) ;) (if_statement "if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xf8)" ( (binary_expression "bVar1 == 0xf8" identifier == number_literal) )) (compound_statement "{\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar8 = param_4 + 5;" (assignment_expression "iVar8 = param_4 + 5" identifier = (binary_expression "param_4 + 5" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x88) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" else (compound_statement "{\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" { (if_statement "if (0xfd < bVar1) {\n        return 0;\n      }" if (parenthesized_expression "(0xfd < bVar1)" ( (binary_expression "0xfd < bVar1" number_literal < identifier) )) (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 (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" if (parenthesized_expression "(bVar1 == 0xfc)" ( (binary_expression "bVar1 == 0xfc" identifier == number_literal) )) (compound_statement "{\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" { (expression_statement "iVar8 = param_4 + 6;" (assignment_expression "iVar8 = param_4 + 6" identifier = (binary_expression "param_4 + 6" identifier + number_literal)) ;) (if_statement "if (bVar2 < 0x84) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000313a4;" goto statement_identifier ;) })) }))))))) (expression_statement "iVar8 = iVar10 + param_4;" (assignment_expression "iVar8 = iVar10 + param_4" identifier = (binary_expression "iVar10 + param_4" identifier + identifier)) ;) (labeled_statement "LAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }" statement_identifier : (if_statement "if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }" if (parenthesized_expression "(*(int *)(param_3 + 0x30) < iVar8)" ( (binary_expression "*(int *)(param_3 + 0x30) < iVar8" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) }))) (if_statement "if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }" if (parenthesized_expression "(0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80))" ( (binary_expression "0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)" number_literal < (parenthesized_expression "(*(byte *)(iVar3 + param_4 + 1) ^ 0x80)" ( (binary_expression "*(byte *)(iVar3 + param_4 + 1) ^ 0x80" (pointer_expression "*(byte *)(iVar3 + param_4 + 1)" * (cast_expression "(byte *)(iVar3 + param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + 1)" ( (binary_expression "iVar3 + param_4 + 1" (binary_expression "iVar3 + param_4" identifier + identifier) + number_literal) )))) ^ number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)(iVar3 + param_4 + 2);" (assignment_expression "pbVar6 = (byte *)(iVar3 + param_4 + 2)" identifier = (cast_expression "(byte *)(iVar3 + param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + 2)" ( (binary_expression "iVar3 + param_4 + 2" (binary_expression "iVar3 + param_4" identifier + identifier) + number_literal) )))) ;) (do_statement "do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);" do (compound_statement "{\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    }" { (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }" if (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" ( (binary_expression "0x3f < (bVar1 ^ 0x80)" number_literal < (parenthesized_expression "(bVar1 ^ 0x80)" ( (binary_expression "bVar1 ^ 0x80" identifier ^ number_literal) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "((byte *)(iVar3 + param_4 + iVar10) != pbVar6)" ( (binary_expression "(byte *)(iVar3 + param_4 + iVar10) != pbVar6" (cast_expression "(byte *)(iVar3 + param_4 + iVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 + iVar10)" ( (binary_expression "iVar3 + param_4 + iVar10" (binary_expression "iVar3 + param_4" identifier + identifier) + identifier) ))) != identifier) )) ;) (return_statement "return iVar10;" return identifier ;) })) (expression_statement "iVar3 = FUN_0002a188(param_3,param_4);" (assignment_expression "iVar3 = FUN_0002a188(param_3,param_4)" identifier = (call_expression "FUN_0002a188(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (if_statement "if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" if (parenthesized_expression "(cVar4 == '\x05')" ( (binary_expression "cVar4 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" { (if_statement "if (iVar3 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }" if (parenthesized_expression "(((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n'))" ( (binary_expression "((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')" (parenthesized_expression "((param_1[0x20] & 0x40U) == 0)" ( (binary_expression "(param_1[0x20] & 0x40U) == 0" (parenthesized_expression "(param_1[0x20] & 0x40U)" ( (binary_expression "param_1[0x20] & 0x40U" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')" ( (binary_expression "*(char *)(*(int *)(param_3 + 4) + param_4) == '\n'" (pointer_expression "*(char *)(*(int *)(param_3 + 4) + param_4)" * (cast_expression "(char *)(*(int *)(param_3 + 4) + param_4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_3 + 4) + param_4)" ( (binary_expression "*(int *)(param_3 + 4) + param_4" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 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_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }" if (parenthesized_expression "((param_1[0x20] & 0x80U) == 0)" ( (binary_expression "(param_1[0x20] & 0x80U) == 0" (parenthesized_expression "(param_1[0x20] & 0x80U)" ( (binary_expression "param_1[0x20] & 0x80U" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (if_statement "if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(param_3 + 4) + param_4) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_3 + 4) + param_4) != '\0'" (pointer_expression "*(char *)(*(int *)(param_3 + 4) + param_4)" * (cast_expression "(char *)(*(int *)(param_3 + 4) + param_4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_3 + 4) + param_4)" ( (binary_expression "*(int *)(param_3 + 4) + param_4" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar3 < 2) {\n    return 0;\n  }" if (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (cVar4 != '\x06') {\n    return 0;\n  }" if (parenthesized_expression "(cVar4 != '\x06')" ( (binary_expression "cVar4 != '\x06'" identifier != (char_literal "'\x06'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar11 = (int *)*puVar9;" (assignment_expression "piVar11 = (int *)*puVar9" identifier = (cast_expression "(int *)*puVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" if (parenthesized_expression "((piVar11[8] == 0) && (piVar11[9] == 0))" ( (binary_expression "(piVar11[8] == 0) && (piVar11[9] == 0)" (parenthesized_expression "(piVar11[8] == 0)" ( (binary_expression "piVar11[8] == 0" (subscript_expression "piVar11[8]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(piVar11[9] == 0)" ( (binary_expression "piVar11[9] == 0" (subscript_expression "piVar11[9]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }" { (expression_statement "iVar10 = piVar11[5];" (assignment_expression "iVar10 = piVar11[5]" identifier = (subscript_expression "piVar11[5]" identifier [ number_literal ])) ;) (if_statement "if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }" { (expression_statement "iVar10 = FUN_0002a20c(param_3,param_4);" (assignment_expression "iVar10 = FUN_0002a20c(param_3,param_4)" identifier = (call_expression "FUN_0002a20c(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = piVar11[5];" (assignment_expression "iVar8 = piVar11[5]" identifier = (subscript_expression "piVar11[5]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar8) goto LAB_00031588;" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (goto_statement "goto LAB_00031588;" goto statement_identifier ;)) (expression_statement "iVar8 = piVar11[8];" (assignment_expression "iVar8 = piVar11[8]" identifier = (subscript_expression "piVar11[8]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00031618;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" else (compound_statement "{\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" { (expression_statement "iVar10 = FUN_0002a20c(param_3,param_4);" (assignment_expression "iVar10 = FUN_0002a20c(param_3,param_4)" identifier = (call_expression "FUN_0002a20c(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = piVar11[5];" (assignment_expression "iVar8 = piVar11[5]" identifier = (subscript_expression "piVar11[5]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }" { (labeled_statement "LAB_00031588:\n      piVar7 = (int *)*piVar11;" statement_identifier : (expression_statement "piVar7 = (int *)*piVar11;" (assignment_expression "piVar7 = (int *)*piVar11" identifier = (cast_expression "(int *)*piVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;)) (if_statement "if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }" if (parenthesized_expression "(iVar10 != *piVar7)" ( (binary_expression "iVar10 != *piVar7" identifier != (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);" do (compound_statement "{\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar5) goto LAB_000315c8;" if (parenthesized_expression "(iVar8 == iVar5)" ( (binary_expression "iVar8 == iVar5" identifier == identifier) )) (goto_statement "goto LAB_000315c8;" goto statement_identifier ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != *piVar7)" ( (binary_expression "iVar10 != *piVar7" identifier != (pointer_expression "*piVar7" * identifier)) )) ;) })) (labeled_statement "LAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);" statement_identifier : (expression_statement "cVar4 = *(char *)(piVar11 + 4);" (assignment_expression "cVar4 = *(char *)(piVar11 + 4)" identifier = (pointer_expression "*(char *)(piVar11 + 4)" * (cast_expression "(char *)(piVar11 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 4)" ( (binary_expression "piVar11 + 4" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }" statement_identifier : (if_statement "if (-1 < cVar4) {\n        return iVar3;\n      }" if (parenthesized_expression "(-1 < cVar4)" ( (binary_expression "-1 < cVar4" number_literal < identifier) )) (compound_statement "{\n        return iVar3;\n      }" { (return_statement "return iVar3;" return identifier ;) }))) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" statement_identifier : (if_statement "if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" if (parenthesized_expression "(0 < piVar11[9])" ( (binary_expression "0 < piVar11[9]" number_literal < (subscript_expression "piVar11[9]" identifier [ number_literal ])) )) (compound_statement "{\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);" do (compound_statement "{\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      }" { (expression_statement "iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));" (assignment_expression "iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" identifier = (call_expression "(*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" (parenthesized_expression "(*(code *)PTR_iswctype_000554a0)" ( (pointer_expression "*(code *)PTR_iswctype_000554a0" * (cast_expression "(code *)PTR_iswctype_000554a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" ( identifier , (pointer_expression "*(undefined4 *)(piVar11[3] + iVar8 * 4)" * (cast_expression "(undefined4 *)(piVar11[3] + iVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[3] + iVar8 * 4)" ( (binary_expression "piVar11[3] + iVar8 * 4" (subscript_expression "piVar11[3]" identifier [ number_literal ]) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 != 0) goto LAB_000315b8;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000315b8;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar8 < piVar11[9])" ( (binary_expression "iVar8 < piVar11[9]" identifier < (subscript_expression "piVar11[9]" identifier [ number_literal ])) )) ;) }))) }))) (expression_statement "iVar8 = piVar11[8];" (assignment_expression "iVar8 = piVar11[8]" identifier = (subscript_expression "piVar11[8]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00031618:\n  iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (if_statement "if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }" { (expression_statement "piVar7 = (int *)piVar11[1];" (assignment_expression "piVar7 = (int *)piVar11[1]" identifier = (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);" do (compound_statement "{\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    }" { (if_statement "if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }" if (parenthesized_expression "((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4)))" ( (binary_expression "(*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))" (parenthesized_expression "(*piVar7 <= iVar10)" ( (binary_expression "*piVar7 <= iVar10" (pointer_expression "*piVar7" * identifier) <= identifier) )) && (parenthesized_expression "(iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))" ( (binary_expression "iVar10 <= *(int *)(piVar11[2] + iVar5 * 4)" identifier <= (pointer_expression "*(int *)(piVar11[2] + iVar5 * 4)" * (cast_expression "(int *)(piVar11[2] + iVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[2] + iVar5 * 4)" ( (binary_expression "piVar11[2] + iVar5 * 4" (subscript_expression "piVar11[2]" identifier [ number_literal ]) + (binary_expression "iVar5 * 4" identifier * number_literal)) ))))) ))) )) (compound_statement "{\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }" { (expression_statement "cVar4 = *(char *)(piVar11 + 4);" (assignment_expression "cVar4 = *(char *)(piVar11 + 4)" identifier = (pointer_expression "*(char *)(piVar11 + 4)" * (cast_expression "(char *)(piVar11 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 4)" ( (binary_expression "piVar11 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000315bc;" goto statement_identifier ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != iVar8)" ( (binary_expression "iVar5 != iVar8" identifier != identifier) )) ;) })) (if_statement "if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }" if (parenthesized_expression "(*(char *)(piVar11 + 4) < '\0')" ( (binary_expression "*(char *)(piVar11 + 4) < '\0'" (pointer_expression "*(char *)(piVar11 + 4)" * (cast_expression "(char *)(piVar11 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 4)" ( (binary_expression "piVar11 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }" { (if_statement "if (iVar3 < 1) {\n      iVar3 = 1;\n    }" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar3 = 1;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n    iVar3 = 0;\n  }" else (compound_statement "{\n    iVar3 = 0;\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_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 IDENT < LIT) )) (compound_statement { (return_statement return 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 + 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 + IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (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 { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) }))))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (return_statement return LIT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ^ LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression IDENT ^ LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) ))) != IDENT) )) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & 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 (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (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) )))) + IDENT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (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 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))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (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 ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return IDENT ;) }))) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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)) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) }))) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (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 IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_000312c0(int *param_1,int param_2,int param_3,int param_4)" (identifier "FUN_000312c0") (parameter_list "(int *param_1,int param_2,int param_3,int param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (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")) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  int *piVar11;\n  \n  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);\n  cVar4 = *(char *)(puVar9 + 1);\n  if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }\n  iVar3 = FUN_0002a188(param_3,param_4);\n  if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }\n  if (iVar3 < 2) {\n    return 0;\n  }\n  if (cVar4 != '\x06') {\n    return 0;\n  }\n  piVar11 = (int *)*puVar9;\n  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }\n  iVar8 = piVar11[8];\nLAB_00031618:\n  iVar5 = 0;\n  if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }\n  if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }\n  return iVar3;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (expression_statement "puVar9 = (undefined4 *)(*param_1 + param_2 * 8);" (assignment_expression "puVar9 = (undefined4 *)(*param_1 + param_2 * 8)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(*param_1 + param_2 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + param_2 * 8)" (( "(") (binary_expression "*param_1 + param_2 * 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (binary_expression "param_2 * 8" (identifier "param_2") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "cVar4 = *(char *)(puVar9 + 1);" (assignment_expression "cVar4 = *(char *)(puVar9 + 1)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(puVar9 + 1)" (* "*") (cast_expression "(char *)(puVar9 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 1)" (( "(") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (cVar4 == '\a') {\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }" (if "if") (parenthesized_expression "(cVar4 == '\a')" (( "(") (binary_expression "cVar4 == '\a'" (identifier "cVar4") (== "==") (char_literal "'\a'" (' "'") (escape_sequence "\a") (' "'"))) () ")")) (compound_statement "{\n    iVar3 = *(int *)(param_3 + 4);\n    bVar1 = *(byte *)(iVar3 + param_4);\n    if (bVar1 < 0xc2) {\n      return 0;\n    }\n    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }\n    bVar2 = *(byte *)(iVar3 + param_4 + 1);\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }\n    if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    iVar8 = iVar10 + param_4;\nLAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }\n    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }\n    pbVar6 = (byte *)(iVar3 + param_4 + 2);\n    do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);\n    return iVar10;\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(param_3 + 4);" (assignment_expression "iVar3 = *(int *)(param_3 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "bVar1 = *(byte *)(iVar3 + param_4);" (assignment_expression "bVar1 = *(byte *)(iVar3 + param_4)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar3 + param_4)" (* "*") (cast_expression "(byte *)(iVar3 + param_4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4)" (( "(") (binary_expression "iVar3 + param_4" (identifier "iVar3") (+ "+") (identifier "param_4")) () ")"))))) (; ";")) (if_statement "if (bVar1 < 0xc2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xc2)" (( "(") (binary_expression "bVar1 < 0xc2" (identifier "bVar1") (< "<") (number_literal "0xc2")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_3 + 0x30) <= param_4 + 1) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x30) <= param_4 + 1)" (( "(") (binary_expression "*(int *)(param_3 + 0x30) <= param_4 + 1" (pointer_expression "*(int *)(param_3 + 0x30)" (* "*") (cast_expression "(int *)(param_3 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (<= "<=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar2 = *(byte *)(iVar3 + param_4 + 1);" (assignment_expression "bVar2 = *(byte *)(iVar3 + param_4 + 1)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar3 + param_4 + 1)" (* "*") (cast_expression "(byte *)(iVar3 + param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4 + 1)" (( "(") (binary_expression "iVar3 + param_4 + 1" (binary_expression "iVar3 + param_4" (identifier "iVar3") (+ "+") (identifier "param_4")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xe0)" (( "(") (binary_expression "bVar1 < 0xe0" (identifier "bVar1") (< "<") (number_literal "0xe0")) () ")")) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }\n      return 0;\n    }" ({ "{") (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return 2;\n      }" (if "if") (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" (( "(") (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" (( "(") (binary_expression "bVar2 ^ 0x80" (identifier "bVar2") (^ "^") (number_literal "0x80")) () ")")) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n        return 2;\n      }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (bVar1 < 0xf0) {\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }\n    else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xf0)" (( "(") (binary_expression "bVar1 < 0xf0" (identifier "bVar1") (< "<") (number_literal "0xf0")) () ")")) (compound_statement "{\n      iVar10 = 3;\n      if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }\n    }" ({ "{") (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" (identifier "iVar10") (= "=") (number_literal "3")) (; ";")) (if_statement "if (bVar1 == 0xe0) {\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }" (if "if") (parenthesized_expression "(bVar1 == 0xe0)" (( "(") (binary_expression "bVar1 == 0xe0" (identifier "bVar1") (== "==") (number_literal "0xe0")) () ")")) (compound_statement "{\n        if (bVar2 < 0xa0) {\n          return 0;\n        }\n        iVar10 = 3;\n      }" ({ "{") (if_statement "if (bVar2 < 0xa0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(bVar2 < 0xa0)" (( "(") (binary_expression "bVar2 < 0xa0" (identifier "bVar2") (< "<") (number_literal "0xa0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar10 = 3;" (assignment_expression "iVar10 = 3" (identifier "iVar10") (= "=") (number_literal "3")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" (else "else") (if_statement "if (bVar1 < 0xf8) {\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xf8)" (( "(") (binary_expression "bVar1 < 0xf8" (identifier "bVar1") (< "<") (number_literal "0xf8")) () ")")) (compound_statement "{\n      iVar10 = 4;\n      if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" ({ "{") (expression_statement "iVar10 = 4;" (assignment_expression "iVar10 = 4" (identifier "iVar10") (= "=") (number_literal "4")) (; ";")) (if_statement "if (bVar1 == 0xf0) {\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" (if "if") (parenthesized_expression "(bVar1 == 0xf0)" (( "(") (binary_expression "bVar1 == 0xf0" (identifier "bVar1") (== "==") (number_literal "0xf0")) () ")")) (compound_statement "{\n        iVar8 = param_4 + 4;\n        if (bVar2 < 0x90) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" ({ "{") (expression_statement "iVar8 = param_4 + 4;" (assignment_expression "iVar8 = param_4 + 4" (identifier "iVar8") (= "=") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (bVar2 < 0x90) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(bVar2 < 0x90)" (( "(") (binary_expression "bVar2 < 0x90" (identifier "bVar2") (< "<") (number_literal "0x90")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_000313a4;" (goto "goto") (statement_identifier "LAB_000313a4") (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" (else "else") (if_statement "if (bVar1 < 0xfc) {\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }\n    else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xfc)" (( "(") (binary_expression "bVar1 < 0xfc" (identifier "bVar1") (< "<") (number_literal "0xfc")) () ")")) (compound_statement "{\n      iVar10 = 5;\n      if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" ({ "{") (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" (identifier "iVar10") (= "=") (number_literal "5")) (; ";")) (if_statement "if (bVar1 == 0xf8) {\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" (if "if") (parenthesized_expression "(bVar1 == 0xf8)" (( "(") (binary_expression "bVar1 == 0xf8" (identifier "bVar1") (== "==") (number_literal "0xf8")) () ")")) (compound_statement "{\n        iVar8 = param_4 + 5;\n        if (bVar2 < 0x88) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" ({ "{") (expression_statement "iVar8 = param_4 + 5;" (assignment_expression "iVar8 = param_4 + 5" (identifier "iVar8") (= "=") (binary_expression "param_4 + 5" (identifier "param_4") (+ "+") (number_literal "5"))) (; ";")) (if_statement "if (bVar2 < 0x88) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(bVar2 < 0x88)" (( "(") (binary_expression "bVar2 < 0x88" (identifier "bVar2") (< "<") (number_literal "0x88")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_000313a4;" (goto "goto") (statement_identifier "LAB_000313a4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" (else "else") (compound_statement "{\n      if (0xfd < bVar1) {\n        return 0;\n      }\n      iVar10 = 6;\n      if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }\n    }" ({ "{") (if_statement "if (0xfd < bVar1) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(0xfd < bVar1)" (( "(") (binary_expression "0xfd < bVar1" (number_literal "0xfd") (< "<") (identifier "bVar1")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar10 = 6;" (assignment_expression "iVar10 = 6" (identifier "iVar10") (= "=") (number_literal "6")) (; ";")) (if_statement "if (bVar1 == 0xfc) {\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" (if "if") (parenthesized_expression "(bVar1 == 0xfc)" (( "(") (binary_expression "bVar1 == 0xfc" (identifier "bVar1") (== "==") (number_literal "0xfc")) () ")")) (compound_statement "{\n        iVar8 = param_4 + 6;\n        if (bVar2 < 0x84) {\n          return 0;\n        }\n        goto LAB_000313a4;\n      }" ({ "{") (expression_statement "iVar8 = param_4 + 6;" (assignment_expression "iVar8 = param_4 + 6" (identifier "iVar8") (= "=") (binary_expression "param_4 + 6" (identifier "param_4") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if (bVar2 < 0x84) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(bVar2 < 0x84)" (( "(") (binary_expression "bVar2 < 0x84" (identifier "bVar2") (< "<") (number_literal "0x84")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_000313a4;" (goto "goto") (statement_identifier "LAB_000313a4") (; ";")) (} "}"))) (} "}")))))))) (expression_statement "iVar8 = iVar10 + param_4;" (assignment_expression "iVar8 = iVar10 + param_4" (identifier "iVar8") (= "=") (binary_expression "iVar10 + param_4" (identifier "iVar10") (+ "+") (identifier "param_4"))) (; ";")) (labeled_statement "LAB_000313a4:\n    if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }" (statement_identifier "LAB_000313a4") (: ":") (if_statement "if (*(int *)(param_3 + 0x30) < iVar8) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x30) < iVar8)" (( "(") (binary_expression "*(int *)(param_3 + 0x30) < iVar8" (pointer_expression "*(int *)(param_3 + 0x30)" (* "*") (cast_expression "(int *)(param_3 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (if_statement "if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80))" (( "(") (binary_expression "0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)" (number_literal "0x3f") (< "<") (parenthesized_expression "(*(byte *)(iVar3 + param_4 + 1) ^ 0x80)" (( "(") (binary_expression "*(byte *)(iVar3 + param_4 + 1) ^ 0x80" (pointer_expression "*(byte *)(iVar3 + param_4 + 1)" (* "*") (cast_expression "(byte *)(iVar3 + param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4 + 1)" (( "(") (binary_expression "iVar3 + param_4 + 1" (binary_expression "iVar3 + param_4" (identifier "iVar3") (+ "+") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) (^ "^") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar6 = (byte *)(iVar3 + param_4 + 2);" (assignment_expression "pbVar6 = (byte *)(iVar3 + param_4 + 2)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(iVar3 + param_4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4 + 2)" (( "(") (binary_expression "iVar3 + param_4 + 2" (binary_expression "iVar3 + param_4" (identifier "iVar3") (+ "+") (identifier "param_4")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (do_statement "do {\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);" (do "do") (compound_statement "{\n      bVar1 = *pbVar6;\n      pbVar6 = pbVar6 + 1;\n      if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }\n    }" ({ "{") (expression_statement "bVar1 = *pbVar6;" (assignment_expression "bVar1 = *pbVar6" (identifier "bVar1") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" (( "(") (binary_expression "0x3f < (bVar1 ^ 0x80)" (number_literal "0x3f") (< "<") (parenthesized_expression "(bVar1 ^ 0x80)" (( "(") (binary_expression "bVar1 ^ 0x80" (identifier "bVar1") (^ "^") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((byte *)(iVar3 + param_4 + iVar10) != pbVar6)" (( "(") (binary_expression "(byte *)(iVar3 + param_4 + iVar10) != pbVar6" (cast_expression "(byte *)(iVar3 + param_4 + iVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4 + iVar10)" (( "(") (binary_expression "iVar3 + param_4 + iVar10" (binary_expression "iVar3 + param_4" (identifier "iVar3") (+ "+") (identifier "param_4")) (+ "+") (identifier "iVar10")) () ")"))) (!= "!=") (identifier "pbVar6")) () ")")) (; ";")) (return_statement "return iVar10;" (return "return") (identifier "iVar10") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0002a188(param_3,param_4);" (assignment_expression "iVar3 = FUN_0002a188(param_3,param_4)" (identifier "iVar3") (= "=") (call_expression "FUN_0002a188(param_3,param_4)" (identifier "FUN_0002a188") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (cVar4 == '\x05') {\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(cVar4 == '\x05')" (( "(") (binary_expression "cVar4 == '\x05'" (identifier "cVar4") (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n    if (iVar3 < 2) {\n      return 0;\n    }\n    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }\n    if ((param_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }\n    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }\n    return 0;\n  }" ({ "{") (if_statement "if (iVar3 < 2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar3 < 2)" (( "(") (binary_expression "iVar3 < 2" (identifier "iVar3") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n'))" (( "(") (binary_expression "((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')" (parenthesized_expression "((param_1[0x20] & 0x40U) == 0)" (( "(") (binary_expression "(param_1[0x20] & 0x40U) == 0" (parenthesized_expression "(param_1[0x20] & 0x40U)" (( "(") (binary_expression "param_1[0x20] & 0x40U" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (& "&") (number_literal "0x40U")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')" (( "(") (binary_expression "*(char *)(*(int *)(param_3 + 4) + param_4) == '\n'" (pointer_expression "*(char *)(*(int *)(param_3 + 4) + param_4)" (* "*") (cast_expression "(char *)(*(int *)(param_3 + 4) + param_4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_3 + 4) + param_4)" (( "(") (binary_expression "*(int *)(param_3 + 4) + param_4" (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "param_4")) () ")")))) (== "==") (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_1[0x20] & 0x80U) == 0) {\n      return iVar3;\n    }" (if "if") (parenthesized_expression "((param_1[0x20] & 0x80U) == 0)" (( "(") (binary_expression "(param_1[0x20] & 0x80U) == 0" (parenthesized_expression "(param_1[0x20] & 0x80U)" (( "(") (binary_expression "param_1[0x20] & 0x80U" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (& "&") (number_literal "0x80U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar3;\n    }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (if_statement "if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {\n      return iVar3;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_3 + 4) + param_4) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_3 + 4) + param_4) != '\0'" (pointer_expression "*(char *)(*(int *)(param_3 + 4) + param_4)" (* "*") (cast_expression "(char *)(*(int *)(param_3 + 4) + param_4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_3 + 4) + param_4)" (( "(") (binary_expression "*(int *)(param_3 + 4) + param_4" (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "param_4")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return iVar3;\n    }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar3 < 2) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar3 < 2)" (( "(") (binary_expression "iVar3 < 2" (identifier "iVar3") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (cVar4 != '\x06') {\n    return 0;\n  }" (if "if") (parenthesized_expression "(cVar4 != '\x06')" (( "(") (binary_expression "cVar4 != '\x06'" (identifier "cVar4") (!= "!=") (char_literal "'\x06'" (' "'") (escape_sequence "\x06") (' "'"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar11 = (int *)*puVar9;" (assignment_expression "piVar11 = (int *)*puVar9" (identifier "piVar11") (= "=") (cast_expression "(int *)*puVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) (; ";")) (if_statement "if ((piVar11[8] == 0) && (piVar11[9] == 0)) {\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }\n  else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" (if "if") (parenthesized_expression "((piVar11[8] == 0) && (piVar11[9] == 0))" (( "(") (binary_expression "(piVar11[8] == 0) && (piVar11[9] == 0)" (parenthesized_expression "(piVar11[8] == 0)" (( "(") (binary_expression "piVar11[8] == 0" (subscript_expression "piVar11[8]" (identifier "piVar11") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar11[9] == 0)" (( "(") (binary_expression "piVar11[9] == 0" (subscript_expression "piVar11[9]" (identifier "piVar11") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar10 = piVar11[5];\n    if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }\n  }" ({ "{") (expression_statement "iVar10 = piVar11[5];" (assignment_expression "iVar10 = piVar11[5]" (identifier "iVar10") (= "=") (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (iVar10 != 0) {\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar10 = FUN_0002a20c(param_3,param_4);\n      iVar8 = piVar11[5];\n      if (0 < iVar8) goto LAB_00031588;\n      iVar8 = piVar11[8];\n      goto LAB_00031618;\n    }" ({ "{") (expression_statement "iVar10 = FUN_0002a20c(param_3,param_4);" (assignment_expression "iVar10 = FUN_0002a20c(param_3,param_4)" (identifier "iVar10") (= "=") (call_expression "FUN_0002a20c(param_3,param_4)" (identifier "FUN_0002a20c") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "iVar8 = piVar11[5];" (assignment_expression "iVar8 = piVar11[5]" (identifier "iVar8") (= "=") (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (0 < iVar8) goto LAB_00031588;" (if "if") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_00031588;" (goto "goto") (statement_identifier "LAB_00031588") (; ";"))) (expression_statement "iVar8 = piVar11[8];" (assignment_expression "iVar8 = piVar11[8]" (identifier "iVar8") (= "=") (subscript_expression "piVar11[8]" (identifier "piVar11") ([ "[") (number_literal "8") (] "]"))) (; ";")) (goto_statement "goto LAB_00031618;" (goto "goto") (statement_identifier "LAB_00031618") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" (else "else") (compound_statement "{\n    iVar10 = FUN_0002a20c(param_3,param_4);\n    iVar8 = piVar11[5];\n    if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }\nLAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }\n  }" ({ "{") (expression_statement "iVar10 = FUN_0002a20c(param_3,param_4);" (assignment_expression "iVar10 = FUN_0002a20c(param_3,param_4)" (identifier "iVar10") (= "=") (call_expression "FUN_0002a20c(param_3,param_4)" (identifier "FUN_0002a20c") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "iVar8 = piVar11[5];" (assignment_expression "iVar8 = piVar11[5]" (identifier "iVar8") (= "=") (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (0 < iVar8) {\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }" (if "if") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\nLAB_00031588:\n      piVar7 = (int *)*piVar11;\n      if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }\nLAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);\nLAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }\n      return 0;\n    }" ({ "{") (labeled_statement "LAB_00031588:\n      piVar7 = (int *)*piVar11;" (statement_identifier "LAB_00031588") (: ":") (expression_statement "piVar7 = (int *)*piVar11;" (assignment_expression "piVar7 = (int *)*piVar11" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar11" (* "*") (identifier "piVar11")))) (; ";"))) (if_statement "if (iVar10 != *piVar7) {\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }" (if "if") (parenthesized_expression "(iVar10 != *piVar7)" (( "(") (binary_expression "iVar10 != *piVar7" (identifier "iVar10") (!= "!=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) () ")")) (compound_statement "{\n        iVar5 = 1;\n        do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);\n      }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        } while (iVar10 != *piVar7);" (do "do") (compound_statement "{\n          piVar7 = piVar7 + 1;\n          if (iVar8 == iVar5) goto LAB_000315c8;\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar8 == iVar5) goto LAB_000315c8;" (if "if") (parenthesized_expression "(iVar8 == iVar5)" (( "(") (binary_expression "iVar8 == iVar5" (identifier "iVar8") (== "==") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_000315c8;" (goto "goto") (statement_identifier "LAB_000315c8") (; ";"))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != *piVar7)" (( "(") (binary_expression "iVar10 != *piVar7" (identifier "iVar10") (!= "!=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000315b8:\n      cVar4 = *(char *)(piVar11 + 4);" (statement_identifier "LAB_000315b8") (: ":") (expression_statement "cVar4 = *(char *)(piVar11 + 4);" (assignment_expression "cVar4 = *(char *)(piVar11 + 4)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(piVar11 + 4)" (* "*") (cast_expression "(char *)(piVar11 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 4)" (( "(") (binary_expression "piVar11 + 4" (identifier "piVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (labeled_statement "LAB_000315bc:\n      if (-1 < cVar4) {\n        return iVar3;\n      }" (statement_identifier "LAB_000315bc") (: ":") (if_statement "if (-1 < cVar4) {\n        return iVar3;\n      }" (if "if") (parenthesized_expression "(-1 < cVar4)" (( "(") (binary_expression "-1 < cVar4" (number_literal "-1") (< "<") (identifier "cVar4")) () ")")) (compound_statement "{\n        return iVar3;\n      }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_000315c8:\n    if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" (statement_identifier "LAB_000315c8") (: ":") (if_statement "if (0 < piVar11[9]) {\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" (if "if") (parenthesized_expression "(0 < piVar11[9])" (( "(") (binary_expression "0 < piVar11[9]" (number_literal "0") (< "<") (subscript_expression "piVar11[9]" (identifier "piVar11") ([ "[") (number_literal "9") (] "]"))) () ")")) (compound_statement "{\n      iVar8 = 0;\n      do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);\n    }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      } while (iVar8 < piVar11[9]);" (do "do") (compound_statement "{\n        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));\n        iVar8 = iVar8 + 1;\n        if (iVar5 != 0) goto LAB_000315b8;\n      }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));" (assignment_expression "iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" (parenthesized_expression "(*(code *)PTR_iswctype_000554a0)" (( "(") (pointer_expression "*(code *)PTR_iswctype_000554a0" (* "*") (cast_expression "(code *)PTR_iswctype_000554a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_iswctype_000554a0"))) () ")")) (argument_list "(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4))" (( "(") (identifier "iVar10") (, ",") (pointer_expression "*(undefined4 *)(piVar11[3] + iVar8 * 4)" (* "*") (cast_expression "(undefined4 *)(piVar11[3] + iVar8 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[3] + iVar8 * 4)" (( "(") (binary_expression "piVar11[3] + iVar8 * 4" (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_000315b8;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000315b8;" (goto "goto") (statement_identifier "LAB_000315b8") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar8 < piVar11[9])" (( "(") (binary_expression "iVar8 < piVar11[9]" (identifier "iVar8") (< "<") (subscript_expression "piVar11[9]" (identifier "piVar11") ([ "[") (number_literal "9") (] "]"))) () ")")) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar8 = piVar11[8];" (assignment_expression "iVar8 = piVar11[8]" (identifier "iVar8") (= "=") (subscript_expression "piVar11[8]" (identifier "piVar11") ([ "[") (number_literal "8") (] "]"))) (; ";")) (labeled_statement "LAB_00031618:\n  iVar5 = 0;" (statement_identifier "LAB_00031618") (: ":") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (0 < iVar8) {\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }" (if "if") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n    piVar7 = (int *)piVar11[1];\n    do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);\n  }" ({ "{") (expression_statement "piVar7 = (int *)piVar11[1];" (assignment_expression "piVar7 = (int *)piVar11[1]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar11[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (do_statement "do {\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    } while (iVar5 != iVar8);" (do "do") (compound_statement "{\n      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }\n      iVar5 = iVar5 + 1;\n      piVar7 = piVar7 + 1;\n    }" ({ "{") (if_statement "if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }" (if "if") (parenthesized_expression "((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4)))" (( "(") (binary_expression "(*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))" (parenthesized_expression "(*piVar7 <= iVar10)" (( "(") (binary_expression "*piVar7 <= iVar10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (<= "<=") (identifier "iVar10")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))" (( "(") (binary_expression "iVar10 <= *(int *)(piVar11[2] + iVar5 * 4)" (identifier "iVar10") (<= "<=") (pointer_expression "*(int *)(piVar11[2] + iVar5 * 4)" (* "*") (cast_expression "(int *)(piVar11[2] + iVar5 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[2] + iVar5 * 4)" (( "(") (binary_expression "piVar11[2] + iVar5 * 4" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) () ")"))))) () ")"))) () ")")) (compound_statement "{\n        cVar4 = *(char *)(piVar11 + 4);\n        goto LAB_000315bc;\n      }" ({ "{") (expression_statement "cVar4 = *(char *)(piVar11 + 4);" (assignment_expression "cVar4 = *(char *)(piVar11 + 4)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(piVar11 + 4)" (* "*") (cast_expression "(char *)(piVar11 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 4)" (( "(") (binary_expression "piVar11 + 4" (identifier "piVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_000315bc;" (goto "goto") (statement_identifier "LAB_000315bc") (; ";")) (} "}"))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != iVar8)" (( "(") (binary_expression "iVar5 != iVar8" (identifier "iVar5") (!= "!=") (identifier "iVar8")) () ")")) (; ";")) (} "}"))) (if_statement "if (*(char *)(piVar11 + 4) < '\0') {\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }\n  else {\n    iVar3 = 0;\n  }" (if "if") (parenthesized_expression "(*(char *)(piVar11 + 4) < '\0')" (( "(") (binary_expression "*(char *)(piVar11 + 4) < '\0'" (pointer_expression "*(char *)(piVar11 + 4)" (* "*") (cast_expression "(char *)(piVar11 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 4)" (( "(") (binary_expression "piVar11 + 4" (identifier "piVar11") (+ "+") (number_literal "4")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (iVar3 < 1) {\n      iVar3 = 1;\n    }\n  }" ({ "{") (if_statement "if (iVar3 < 1) {\n      iVar3 = 1;\n    }" (if "if") (parenthesized_expression "(iVar3 < 1)" (( "(") (binary_expression "iVar3 < 1" (identifier "iVar3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar3 = 1;\n    }" ({ "{") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar3 = 0;\n  }" (else "else") (compound_statement "{\n    iVar3 = 0;\n  }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

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

{
  type_4 var_2;
  type_4 var_4;
  int var_5;
  type_5 *var_7;
  type_6 *var_12;
  char var_1;
  int var_16;
  type_7 var_14;
  type_4 *var_8;
  int *var_17;
  type_7 var_13;
  int var_6;
  type_8 *prVar13;
  type_6 var_10;
  type_9 var_15;
  
  prVar13 = dfa->nodes;
  var_1 = prVar13[node_idx].field_0x4;
  if (var_1 == '\a') {
    var_7 = input->mbs;
    var_2 = var_7[var_3];
    if (var_2 < 0xc2) {
      return 0;
    }
    if (input->len <= var_3 + 1) {
      return 0;
    }
    var_4 = var_7[var_3 + 1];
    if (var_2 < 0xe0) {
      if ((var_4 ^ 0x80) < 0x40) {
        return 2;
      }
      return 0;
    }
    if (var_2 < 0xf0) {
      var_5 = 3;
      if (var_2 == 0xe0) {
        if (var_4 < 0xa0) {
          return 0;
        }
        var_5 = 3;
      }
    }
    else if (var_2 < 0xf8) {
      var_5 = 4;
      if (var_2 == 0xf0) {
        var_6 = var_3 + 4;
        if (var_4 < 0x90) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else if (var_2 < 0xfc) {
      var_5 = 5;
      if (var_2 == 0xf8) {
        var_6 = var_3 + 5;
        if (var_4 < 0x88) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else {
      if (0xfd < var_2) {
        return 0;
      }
      var_5 = 6;
      if (var_2 == 0xfc) {
        var_6 = var_3 + 6;
        if (var_4 < 0x84) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    var_6 = var_5 + var_3;
LAB_000313a4:
    if (input->len < var_6) {
      return 0;
    }
    if (0x3f < (var_7[var_3 + 1] ^ 0x80)) {
      return 0;
    }
    var_8 = var_7 + var_3 + 2;
    do {
      var_2 = *var_8;
      var_8 = var_8 + 1;
      if (0x3f < (var_2 ^ 0x80)) {
        return 0;
      }
    } while (var_7 + var_5 + var_3 != var_8);
    return var_5;
  }
  var_5 = var_9(input,var_3);
  if (var_1 == '\x05') {
    if (var_5 < 2) {
      return 0;
    }
    if (((dfa->syntax & 0x40) == 0) && (input->mbs[var_3] == '\n')) {
      return 0;
    }
    if ((dfa->syntax & 0x80) == 0) {
      return var_5;
    }
    if (input->mbs[var_3] != '\0') {
      return var_5;
    }
    return 0;
  }
  if (var_5 < 2) {
    return 0;
  }
  if (var_1 != '\x06') {
    return 0;
  }
  var_15 = prVar13[node_idx].opr.sbcset;
  if ((var_15[8] == 0) && (var_15[9] == 0)) {
    var_10 = var_15[5];
    if (var_10 != 0) {
      var_10 = var_11(input,var_3);
      var_13 = var_15[5];
      if (0 < (int)var_13) goto LAB_00031588;
      var_13 = var_15[8];
      goto LAB_00031618;
    }
  }
  else {
    var_10 = var_11(input,var_3);
    var_13 = var_15[5];
    if (0 < (int)var_13) {
LAB_00031588:
      var_12 = (type_6 *)*var_15;
      if (var_10 != *var_12) {
        var_14 = 1;
        do {
          var_12 = var_12 + 1;
          if (var_13 == var_14) goto LAB_000315c8;
          var_14 = var_14 + 1;
        } while (var_10 != *var_12);
      }
LAB_000315b8:
      var_1 = *(char *)(var_15 + 4);
LAB_000315bc:
      if (-1 < var_1) {
        return var_5;
      }
      return 0;
    }
LAB_000315c8:
    if (0 < (int)var_15[9]) {
      var_6 = 0;
      do {
        var_16 = (*(type_10 *)PTR_iswctype_000554a0)(var_10,*(type_11 *)(var_15[3] + var_6 * 4));
        var_6 = var_6 + 1;
        if (var_16 != 0) goto LAB_000315b8;
      } while (var_6 < (int)var_15[9]);
    }
  }
  var_13 = var_15[8];
LAB_00031618:
  var_14 = 0;
  if (0 < (int)var_13) {
    var_17 = (int *)var_15[1];
    do {
      if ((*var_17 <= (int)var_10) && ((int)var_10 <= *(int *)(var_15[2] + var_14 * 4))) {
        var_1 = *(char *)(var_15 + 4);
        goto LAB_000315bc;
      }
      var_14 = var_14 + 1;
      var_17 = var_17 + 1;
    } while (var_14 != var_13);
  }
  if (*(char *)(var_15 + 4) < '\0') {
    if (var_5 < 1) {
      var_5 = 1;
    }
  }
  else {
    var_5 = 0;
  }
  return var_5;
}


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

int MASKED(int *param_1,int param_2,int param_3,int param_4)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  byte *pbVar6;
  int *piVar7;
  int iVar8;
  undefined4 *puVar9;
  int iVar10;
  int *piVar11;
  
  puVar9 = (undefined4 *)(*param_1 + param_2 * 8);
  cVar4 = *(char *)(puVar9 + 1);
  if (cVar4 == '\a') {
    iVar3 = *(int *)(param_3 + 4);
    bVar1 = *(byte *)(iVar3 + param_4);
    if (bVar1 < 0xc2) {
      return 0;
    }
    if (*(int *)(param_3 + 0x30) <= param_4 + 1) {
      return 0;
    }
    bVar2 = *(byte *)(iVar3 + param_4 + 1);
    if (bVar1 < 0xe0) {
      if ((bVar2 ^ 0x80) < 0x40) {
        return 2;
      }
      return 0;
    }
    if (bVar1 < 0xf0) {
      iVar10 = 3;
      if (bVar1 == 0xe0) {
        if (bVar2 < 0xa0) {
          return 0;
        }
        iVar10 = 3;
      }
    }
    else if (bVar1 < 0xf8) {
      iVar10 = 4;
      if (bVar1 == 0xf0) {
        iVar8 = param_4 + 4;
        if (bVar2 < 0x90) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else if (bVar1 < 0xfc) {
      iVar10 = 5;
      if (bVar1 == 0xf8) {
        iVar8 = param_4 + 5;
        if (bVar2 < 0x88) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    else {
      if (0xfd < bVar1) {
        return 0;
      }
      iVar10 = 6;
      if (bVar1 == 0xfc) {
        iVar8 = param_4 + 6;
        if (bVar2 < 0x84) {
          return 0;
        }
        goto LAB_000313a4;
      }
    }
    iVar8 = iVar10 + param_4;
LAB_000313a4:
    if (*(int *)(param_3 + 0x30) < iVar8) {
      return 0;
    }
    if (0x3f < (*(byte *)(iVar3 + param_4 + 1) ^ 0x80)) {
      return 0;
    }
    pbVar6 = (byte *)(iVar3 + param_4 + 2);
    do {
      bVar1 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if (0x3f < (bVar1 ^ 0x80)) {
        return 0;
      }
    } while ((byte *)(iVar3 + param_4 + iVar10) != pbVar6);
    return iVar10;
  }
  iVar3 = FUN_0002a188(param_3,param_4);
  if (cVar4 == '\x05') {
    if (iVar3 < 2) {
      return 0;
    }
    if (((param_1[0x20] & 0x40U) == 0) && (*(char *)(*(int *)(param_3 + 4) + param_4) == '\n')) {
      return 0;
    }
    if ((param_1[0x20] & 0x80U) == 0) {
      return iVar3;
    }
    if (*(char *)(*(int *)(param_3 + 4) + param_4) != '\0') {
      return iVar3;
    }
    return 0;
  }
  if (iVar3 < 2) {
    return 0;
  }
  if (cVar4 != '\x06') {
    return 0;
  }
  piVar11 = (int *)*puVar9;
  if ((piVar11[8] == 0) && (piVar11[9] == 0)) {
    iVar10 = piVar11[5];
    if (iVar10 != 0) {
      iVar10 = FUN_0002a20c(param_3,param_4);
      iVar8 = piVar11[5];
      if (0 < iVar8) goto LAB_00031588;
      iVar8 = piVar11[8];
      goto LAB_00031618;
    }
  }
  else {
    iVar10 = FUN_0002a20c(param_3,param_4);
    iVar8 = piVar11[5];
    if (0 < iVar8) {
LAB_00031588:
      piVar7 = (int *)*piVar11;
      if (iVar10 != *piVar7) {
        iVar5 = 1;
        do {
          piVar7 = piVar7 + 1;
          if (iVar8 == iVar5) goto LAB_000315c8;
          iVar5 = iVar5 + 1;
        } while (iVar10 != *piVar7);
      }
LAB_000315b8:
      cVar4 = *(char *)(piVar11 + 4);
LAB_000315bc:
      if (-1 < cVar4) {
        return iVar3;
      }
      return 0;
    }
LAB_000315c8:
    if (0 < piVar11[9]) {
      iVar8 = 0;
      do {
        iVar5 = (*(code *)PTR_iswctype_000554a0)(iVar10,*(undefined4 *)(piVar11[3] + iVar8 * 4));
        iVar8 = iVar8 + 1;
        if (iVar5 != 0) goto LAB_000315b8;
      } while (iVar8 < piVar11[9]);
    }
  }
  iVar8 = piVar11[8];
LAB_00031618:
  iVar5 = 0;
  if (0 < iVar8) {
    piVar7 = (int *)piVar11[1];
    do {
      if ((*piVar7 <= iVar10) && (iVar10 <= *(int *)(piVar11[2] + iVar5 * 4))) {
        cVar4 = *(char *)(piVar11 + 4);
        goto LAB_000315bc;
      }
      iVar5 = iVar5 + 1;
      piVar7 = piVar7 + 1;
    } while (iVar5 != iVar8);
  }
  if (*(char *)(piVar11 + 4) < '\0') {
    if (iVar3 < 1) {
      iVar3 = 1;
    }
  }
  else {
    iVar3 = 0;
  }
  return iVar3;
}

