
int regcomp(regex_t *__preg,char *__pattern,int __cflags)

{
  char cVar1;
  reg_errcode_t rVar2;
  char *pcVar3;
  ulong uVar4;
  reg_syntax_t syntax;
  ulong uVar5;
  byte bVar6;
  
  bVar6 = 0;
  uVar5 = (ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;
  __preg->buffer = (uchar *)0x0;
  __preg->allocated = 0;
  __preg->used = 0;
  pcVar3 = (char *)malloc(0x100);
  __preg->fastmap = pcVar3;
  if (pcVar3 == (char *)0x0) {
    rVar2 = _REG_ESPACE;
  }
  else {
    uVar4 = (ulong)((__cflags & 2U) << 0x15);
    syntax = uVar4 | uVar5;
    if ((__cflags & 4U) == 0) {
      __preg->field_0x38 = __preg->field_0x38 & 0x7f;
    }
    else {
      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;
      __preg->field_0x38 = __preg->field_0x38 | 0x80;
    }
    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;
    __preg->translate = (uchar *)0x0;
    uVar5 = 0xffffffffffffffff;
    pcVar3 = __pattern;
    do {
      if (uVar5 == 0) break;
      uVar5 = uVar5 - 1;
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;
    } while (cVar1 != '\0');
    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);
    if (rVar2 == _REG_ERPAREN) {
      rVar2 = _REG_EPAREN;
    }
    else if (rVar2 == _REG_NOERROR) {
      re_compile_fastmap(__preg);
      return 0;
    }
    free(__preg->fastmap);
    __preg->fastmap = (char *)0x0;
  }
  return rVar2;
}



int regcomp(regex_t *__preg,char *__pattern,int __cflags)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  ulong uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  byte bVar8;
  
  bVar8 = 0;
  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;
  __preg->buffer = (uchar *)0x0;
  __preg->allocated = 0;
  __preg->used = 0;
  pcVar3 = (char *)malloc(0x100);
  __preg->fastmap = pcVar3;
  if (pcVar3 == (char *)0x0) {
    iVar2 = 0xc;
  }
  else {
    uVar5 = (__cflags & 2U) << 0x15;
    uVar6 = uVar5 | uVar7;
    if ((__cflags & 4U) == 0) {
      __preg->field_0x38 = __preg->field_0x38 & 0x7f;
    }
    else {
      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;
      __preg->field_0x38 = __preg->field_0x38 | 0x80;
    }
    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;
    __preg->translate = (uchar *)0x0;
    uVar4 = 0xffffffffffffffff;
    pcVar3 = __pattern;
    do {
      if (uVar4 == 0) break;
      uVar4 = uVar4 - 1;
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;
    } while (cVar1 != '\0');
    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);
    if (iVar2 == 0x10) {
      iVar2 = 8;
    }
    else if (iVar2 == 0) {
      re_compile_fastmap(__preg);
      return 0;
    }
    free(__preg->fastmap);
    __preg->fastmap = (char *)0x0;
  }
  return iVar2;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,RDI
MOV R12,RSI
MOV EBP,EDX
MOV EAX,EDX
AND EAX,0x1
CMP EAX,0x1
SBB R13,R13
AND R13D,0xfd4fca
ADD R13,0x3b2fc
MOV qword ptr [RDI],0x0
MOV qword ptr [RDI + 0x8],0x0
MOV qword ptr [RDI + 0x10],0x0
MOV EDI,0x100
CALL 0x00108f10
MOV qword ptr [RBX + 0x20],RAX
TEST RAX,RAX
JZ 0x00176ea6
MOV RSI,RBP
SHL RSI,0x15
AND ESI,0x400000
OR RSI,R13
TEST BPL,0x4
JZ 0x00176e88
AND RSI,-0x41
OR RSI,0x100
OR byte ptr [RBX + 0x38],0x80
SHR EBP,0x3
AND EBP,0x1
SHL EBP,0x4
MOVZX EAX,byte ptr [RBX + 0x38]
AND EAX,0xffffffef
OR EBP,EAX
MOV byte ptr [RBX + 0x38],BPL
MOV qword ptr [RBX + 0x28],0x0
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R12
SCASB.REPNE RDI
MOV RDX,RCX
NOT RDX
LEA RDX,[RDX + -0x1]
MOV RCX,RSI
MOV RSI,R12
MOV RDI,RBX
CALL 0x00175b75
MOV EBP,EAX
CMP EAX,0x10
JZ 0x00176e8e
TEST EAX,EAX
JNZ 0x00176e93
MOV RDI,RBX
CALL 0x00176880
MOV EAX,EBP
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
AND byte ptr [RBX + 0x38],0x7f
JMP 0x00176e21
MOV EBP,0x8
MOV RDI,qword ptr [RBX + 0x20]
CALL 0x00108a20
MOV qword ptr [RBX + 0x20],0x0
JMP 0x00176e7b
MOV EBP,0xc
JMP 0x00176e7b
(translation_unit "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}\n\n" (function_definition "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}" primitive_type (function_declarator "regcomp(regex_t *__preg,char *__pattern,int __cflags)" identifier (parameter_list "(regex_t *__preg,char *__pattern,int __cflags)" ( (parameter_declaration "regex_t *__preg" type_identifier (pointer_declarator "*__preg" * identifier)) , (parameter_declaration "char *__pattern" primitive_type (pointer_declarator "*__pattern" * identifier)) , (parameter_declaration "int __cflags" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;" (assignment_expression "uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" identifier = (binary_expression "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" (parenthesized_expression "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca)" ( (binary_expression "-(uint)((__cflags & 1U) == 0) & 0xfd4fca" (unary_expression "-(uint)((__cflags & 1U) == 0)" - (call_expression "(uint)((__cflags & 1U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((__cflags & 1U) == 0)" ( (binary_expression "(__cflags & 1U) == 0" (parenthesized_expression "(__cflags & 1U)" ( (binary_expression "__cflags & 1U" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) (expression_statement "__preg->buffer = (uchar *)0x0;" (assignment_expression "__preg->buffer = (uchar *)0x0" (field_expression "__preg->buffer" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__preg->allocated = 0;" (assignment_expression "__preg->allocated = 0" (field_expression "__preg->allocated" identifier -> field_identifier) = number_literal) ;) (expression_statement "__preg->used = 0;" (assignment_expression "__preg->used = 0" (field_expression "__preg->used" identifier -> field_identifier) = number_literal) ;) (expression_statement "pcVar3 = (char *)malloc(0x100);" (assignment_expression "pcVar3 = (char *)malloc(0x100)" identifier = (cast_expression "(char *)malloc(0x100)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x100)" identifier (argument_list "(0x100)" ( number_literal ))))) ;) (expression_statement "__preg->fastmap = pcVar3;" (assignment_expression "__preg->fastmap = pcVar3" (field_expression "__preg->fastmap" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = 0xc;\n  }" { (expression_statement "iVar2 = 0xc;" (assignment_expression "iVar2 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" else (compound_statement "{\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" { (expression_statement "uVar5 = (__cflags & 2U) << 0x15;" (assignment_expression "uVar5 = (__cflags & 2U) << 0x15" identifier = (binary_expression "(__cflags & 2U) << 0x15" (parenthesized_expression "(__cflags & 2U)" ( (binary_expression "__cflags & 2U" identifier & number_literal) )) << number_literal)) ;) (expression_statement "uVar6 = uVar5 | uVar7;" (assignment_expression "uVar6 = uVar5 | uVar7" identifier = (binary_expression "uVar5 | uVar7" identifier | identifier)) ;) (if_statement "if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" if (parenthesized_expression "((__cflags & 4U) == 0)" ( (binary_expression "(__cflags & 4U) == 0" (parenthesized_expression "(__cflags & 4U)" ( (binary_expression "__cflags & 4U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }" { (expression_statement "__preg->field_0x38 = __preg->field_0x38 & 0x7f;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "__preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" identifier -> field_identifier) & number_literal)) ;) }) (else_clause "else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" else (compound_statement "{\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" { (expression_statement "uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;" (assignment_expression "uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100" identifier = (binary_expression "uVar5 | uVar7 & 0xffffffbf | 0x100" (binary_expression "uVar5 | uVar7 & 0xffffffbf" identifier | (binary_expression "uVar7 & 0xffffffbf" identifier & number_literal)) | number_literal)) ;) (expression_statement "__preg->field_0x38 = __preg->field_0x38 | 0x80;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "__preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" identifier -> field_identifier) | number_literal)) ;) }))) (expression_statement "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;" (assignment_expression "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "(byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (call_expression "(byte)(((uint)__cflags >> 3 & 1) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uint)__cflags >> 3 & 1) << 4)" ( (binary_expression "((uint)__cflags >> 3 & 1) << 4" (parenthesized_expression "((uint)__cflags >> 3 & 1)" ( (binary_expression "(uint)__cflags >> 3 & 1" (binary_expression "(uint)__cflags >> 3" (cast_expression "(uint)__cflags" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) << number_literal) ))) | (binary_expression "__preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" identifier -> field_identifier) & number_literal))) ;) (expression_statement "__preg->translate = (uchar *)0x0;" (assignment_expression "__preg->translate = (uchar *)0x0" (field_expression "__preg->translate" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar4 = 0xffffffffffffffff;" (assignment_expression "uVar4 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar3 = __pattern;" (assignment_expression "pcVar3 = __pattern" identifier = identifier) ;) (do_statement "do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    }" { (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar3;" (assignment_expression "cVar1 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (expression_statement "pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;" (assignment_expression "pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1" identifier = (binary_expression "pcVar3 + (ulong)bVar8 * -2 + 1" (binary_expression "pcVar3 + (ulong)bVar8 * -2" identifier + (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);" (assignment_expression "iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6)" identifier = (call_expression "FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6)" identifier (argument_list "(__preg,__pattern,~uVar4 - 1,uVar6)" ( identifier , identifier , (binary_expression "~uVar4 - 1" (unary_expression "~uVar4" ~ identifier) - number_literal) , identifier )))) ;) (if_statement "if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0x10)" ( (binary_expression "iVar2 == 0x10" identifier == number_literal) )) (compound_statement "{\n      iVar2 = 8;\n    }" { (expression_statement "iVar2 = 8;" (assignment_expression "iVar2 = 8" identifier = number_literal) ;) }) (else_clause "else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" else (if_statement "if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      re_compile_fastmap(__preg);\n      return 0;\n    }" { (expression_statement "re_compile_fastmap(__preg);" (call_expression "re_compile_fastmap(__preg)" identifier (argument_list "(__preg)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))) (expression_statement "free(__preg->fastmap);" (call_expression "free(__preg->fastmap)" identifier (argument_list "(__preg->fastmap)" ( (field_expression "__preg->fastmap" identifier -> field_identifier) ))) ;) (expression_statement "__preg->fastmap = (char *)0x0;" (assignment_expression "__preg->fastmap = (char *)0x0" (field_expression "__preg->fastmap" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  reg_errcode_t rVar2;\n  char *pcVar3;\n  ulong uVar4;\n  reg_syntax_t syntax;\n  ulong uVar5;\n  byte bVar6;\n  \n  bVar6 = 0;\n  uVar5 = (ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    rVar2 = _REG_ESPACE;\n  }\n  else {\n    uVar4 = (ulong)((__cflags & 2U) << 0x15);\n    syntax = uVar4 | uVar5;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar5 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');\n    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);\n    if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return rVar2;\n}\n\n" (function_definition "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  reg_errcode_t rVar2;\n  char *pcVar3;\n  ulong uVar4;\n  reg_syntax_t syntax;\n  ulong uVar5;\n  byte bVar6;\n  \n  bVar6 = 0;\n  uVar5 = (ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    rVar2 = _REG_ESPACE;\n  }\n  else {\n    uVar4 = (ulong)((__cflags & 2U) << 0x15);\n    syntax = uVar4 | uVar5;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar5 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');\n    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);\n    if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return rVar2;\n}" primitive_type (function_declarator "regcomp(regex_t *__preg,char *__pattern,int __cflags)" identifier (parameter_list "(regex_t *__preg,char *__pattern,int __cflags)" ( (parameter_declaration "regex_t *__preg" type_identifier (pointer_declarator "*__preg" * identifier)) , (parameter_declaration "char *__pattern" primitive_type (pointer_declarator "*__pattern" * identifier)) , (parameter_declaration "int __cflags" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  reg_errcode_t rVar2;\n  char *pcVar3;\n  ulong uVar4;\n  reg_syntax_t syntax;\n  ulong uVar5;\n  byte bVar6;\n  \n  bVar6 = 0;\n  uVar5 = (ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    rVar2 = _REG_ESPACE;\n  }\n  else {\n    uVar4 = (ulong)((__cflags & 2U) << 0x15);\n    syntax = uVar4 | uVar5;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar5 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');\n    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);\n    if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return rVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "reg_errcode_t rVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "reg_syntax_t syntax;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = (ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;" (assignment_expression "uVar5 = (ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" identifier = (binary_expression "(ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" (call_expression "(ulong)(-(uint)((__cflags & 1U) == 0) & 0xfd4fca)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca)" ( (binary_expression "-(uint)((__cflags & 1U) == 0) & 0xfd4fca" (unary_expression "-(uint)((__cflags & 1U) == 0)" - (call_expression "(uint)((__cflags & 1U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((__cflags & 1U) == 0)" ( (binary_expression "(__cflags & 1U) == 0" (parenthesized_expression "(__cflags & 1U)" ( (binary_expression "__cflags & 1U" identifier & number_literal) )) == number_literal) )))) & number_literal) ))) + number_literal)) ;) (expression_statement "__preg->buffer = (uchar *)0x0;" (assignment_expression "__preg->buffer = (uchar *)0x0" (field_expression "__preg->buffer" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__preg->allocated = 0;" (assignment_expression "__preg->allocated = 0" (field_expression "__preg->allocated" identifier -> field_identifier) = number_literal) ;) (expression_statement "__preg->used = 0;" (assignment_expression "__preg->used = 0" (field_expression "__preg->used" identifier -> field_identifier) = number_literal) ;) (expression_statement "pcVar3 = (char *)malloc(0x100);" (assignment_expression "pcVar3 = (char *)malloc(0x100)" identifier = (cast_expression "(char *)malloc(0x100)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x100)" identifier (argument_list "(0x100)" ( number_literal ))))) ;) (expression_statement "__preg->fastmap = pcVar3;" (assignment_expression "__preg->fastmap = pcVar3" (field_expression "__preg->fastmap" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n    rVar2 = _REG_ESPACE;\n  }\n  else {\n    uVar4 = (ulong)((__cflags & 2U) << 0x15);\n    syntax = uVar4 | uVar5;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar5 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');\n    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);\n    if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    rVar2 = _REG_ESPACE;\n  }" { (expression_statement "rVar2 = _REG_ESPACE;" (assignment_expression "rVar2 = _REG_ESPACE" identifier = identifier) ;) }) (else_clause "else {\n    uVar4 = (ulong)((__cflags & 2U) << 0x15);\n    syntax = uVar4 | uVar5;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar5 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');\n    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);\n    if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" else (compound_statement "{\n    uVar4 = (ulong)((__cflags & 2U) << 0x15);\n    syntax = uVar4 | uVar5;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar5 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');\n    rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);\n    if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" { (expression_statement "uVar4 = (ulong)((__cflags & 2U) << 0x15);" (assignment_expression "uVar4 = (ulong)((__cflags & 2U) << 0x15)" identifier = (call_expression "(ulong)((__cflags & 2U) << 0x15)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((__cflags & 2U) << 0x15)" ( (binary_expression "(__cflags & 2U) << 0x15" (parenthesized_expression "(__cflags & 2U)" ( (binary_expression "__cflags & 2U" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "syntax = uVar4 | uVar5;" (assignment_expression "syntax = uVar4 | uVar5" identifier = (binary_expression "uVar4 | uVar5" identifier | identifier)) ;) (if_statement "if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" if (parenthesized_expression "((__cflags & 4U) == 0)" ( (binary_expression "(__cflags & 4U) == 0" (parenthesized_expression "(__cflags & 4U)" ( (binary_expression "__cflags & 4U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }" { (expression_statement "__preg->field_0x38 = __preg->field_0x38 & 0x7f;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "__preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" identifier -> field_identifier) & number_literal)) ;) }) (else_clause "else {\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" else (compound_statement "{\n      syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" { (expression_statement "syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100;" (assignment_expression "syntax = uVar4 | uVar5 & 0xffffffffffffffbf | 0x100" identifier = (binary_expression "uVar4 | uVar5 & 0xffffffffffffffbf | 0x100" (binary_expression "uVar4 | uVar5 & 0xffffffffffffffbf" identifier | (binary_expression "uVar5 & 0xffffffffffffffbf" identifier & number_literal)) | number_literal)) ;) (expression_statement "__preg->field_0x38 = __preg->field_0x38 | 0x80;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "__preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" identifier -> field_identifier) | number_literal)) ;) }))) (expression_statement "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;" (assignment_expression "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "(byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (call_expression "(byte)(((uint)__cflags >> 3 & 1) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uint)__cflags >> 3 & 1) << 4)" ( (binary_expression "((uint)__cflags >> 3 & 1) << 4" (parenthesized_expression "((uint)__cflags >> 3 & 1)" ( (binary_expression "(uint)__cflags >> 3 & 1" (binary_expression "(uint)__cflags >> 3" (cast_expression "(uint)__cflags" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) << number_literal) ))) | (binary_expression "__preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" identifier -> field_identifier) & number_literal))) ;) (expression_statement "__preg->translate = (uchar *)0x0;" (assignment_expression "__preg->translate = (uchar *)0x0" (field_expression "__preg->translate" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar5 = 0xffffffffffffffff;" (assignment_expression "uVar5 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar3 = __pattern;" (assignment_expression "pcVar3 = __pattern" identifier = identifier) ;) (do_statement "do {\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar5 == 0) break;\n      uVar5 = uVar5 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;\n    }" { (if_statement "if (uVar5 == 0) break;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar3;" (assignment_expression "cVar1 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (expression_statement "pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1;" (assignment_expression "pcVar3 = pcVar3 + (ulong)bVar6 * -2 + 1" identifier = (binary_expression "pcVar3 + (ulong)bVar6 * -2 + 1" (binary_expression "pcVar3 + (ulong)bVar6 * -2" identifier + (binary_expression "(ulong)bVar6 * -2" (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax);" (assignment_expression "rVar2 = re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax)" identifier = (call_expression "re_compile_internal((regex_t *)__preg,__pattern,~uVar5 - 1,syntax)" identifier (argument_list "((regex_t *)__preg,__pattern,~uVar5 - 1,syntax)" ( (cast_expression "(regex_t *)__preg" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (binary_expression "~uVar5 - 1" (unary_expression "~uVar5" ~ identifier) - number_literal) , identifier )))) ;) (if_statement "if (rVar2 == _REG_ERPAREN) {\n      rVar2 = _REG_EPAREN;\n    }\n    else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" if (parenthesized_expression "(rVar2 == _REG_ERPAREN)" ( (binary_expression "rVar2 == _REG_ERPAREN" identifier == identifier) )) (compound_statement "{\n      rVar2 = _REG_EPAREN;\n    }" { (expression_statement "rVar2 = _REG_EPAREN;" (assignment_expression "rVar2 = _REG_EPAREN" identifier = identifier) ;) }) (else_clause "else if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" else (if_statement "if (rVar2 == _REG_NOERROR) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" if (parenthesized_expression "(rVar2 == _REG_NOERROR)" ( (binary_expression "rVar2 == _REG_NOERROR" identifier == identifier) )) (compound_statement "{\n      re_compile_fastmap(__preg);\n      return 0;\n    }" { (expression_statement "re_compile_fastmap(__preg);" (call_expression "re_compile_fastmap(__preg)" identifier (argument_list "(__preg)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))) (expression_statement "free(__preg->fastmap);" (call_expression "free(__preg->fastmap)" identifier (argument_list "(__preg->fastmap)" ( (field_expression "__preg->fastmap" identifier -> field_identifier) ))) ;) (expression_statement "__preg->fastmap = (char *)0x0;" (assignment_expression "__preg->fastmap = (char *)0x0" (field_expression "__preg->fastmap" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (return_statement "return rVar2;" return identifier ;) })))
(translation_unit "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}\n\n" (function_definition "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}" primitive_type (function_declarator "regcomp(regex_t *__preg,char *__pattern,int __cflags)" identifier (parameter_list "(regex_t *__preg,char *__pattern,int __cflags)" ( (parameter_declaration "regex_t *__preg" type_identifier (pointer_declarator "*__preg" * identifier)) , (parameter_declaration "char *__pattern" primitive_type (pointer_declarator "*__pattern" * identifier)) , (parameter_declaration "int __cflags" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;" (assignment_expression "uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" identifier = (binary_expression "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" (parenthesized_expression "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca)" ( (binary_expression "-(uint)((__cflags & 1U) == 0) & 0xfd4fca" (unary_expression "-(uint)((__cflags & 1U) == 0)" - (call_expression "(uint)((__cflags & 1U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((__cflags & 1U) == 0)" ( (binary_expression "(__cflags & 1U) == 0" (parenthesized_expression "(__cflags & 1U)" ( (binary_expression "__cflags & 1U" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) (expression_statement "__preg->buffer = (uchar *)0x0;" (assignment_expression "__preg->buffer = (uchar *)0x0" (field_expression "__preg->buffer" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__preg->allocated = 0;" (assignment_expression "__preg->allocated = 0" (field_expression "__preg->allocated" identifier -> field_identifier) = number_literal) ;) (expression_statement "__preg->used = 0;" (assignment_expression "__preg->used = 0" (field_expression "__preg->used" identifier -> field_identifier) = number_literal) ;) (expression_statement "pcVar3 = (char *)malloc(0x100);" (assignment_expression "pcVar3 = (char *)malloc(0x100)" identifier = (cast_expression "(char *)malloc(0x100)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x100)" identifier (argument_list "(0x100)" ( number_literal ))))) ;) (expression_statement "__preg->fastmap = pcVar3;" (assignment_expression "__preg->fastmap = pcVar3" (field_expression "__preg->fastmap" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = 0xc;\n  }" { (expression_statement "iVar2 = 0xc;" (assignment_expression "iVar2 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" else (compound_statement "{\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" { (expression_statement "uVar5 = (__cflags & 2U) << 0x15;" (assignment_expression "uVar5 = (__cflags & 2U) << 0x15" identifier = (binary_expression "(__cflags & 2U) << 0x15" (parenthesized_expression "(__cflags & 2U)" ( (binary_expression "__cflags & 2U" identifier & number_literal) )) << number_literal)) ;) (expression_statement "uVar6 = uVar5 | uVar7;" (assignment_expression "uVar6 = uVar5 | uVar7" identifier = (binary_expression "uVar5 | uVar7" identifier | identifier)) ;) (if_statement "if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" if (parenthesized_expression "((__cflags & 4U) == 0)" ( (binary_expression "(__cflags & 4U) == 0" (parenthesized_expression "(__cflags & 4U)" ( (binary_expression "__cflags & 4U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }" { (expression_statement "__preg->field_0x38 = __preg->field_0x38 & 0x7f;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "__preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" identifier -> field_identifier) & number_literal)) ;) }) (else_clause "else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" else (compound_statement "{\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" { (expression_statement "uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;" (assignment_expression "uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100" identifier = (binary_expression "uVar5 | uVar7 & 0xffffffbf | 0x100" (binary_expression "uVar5 | uVar7 & 0xffffffbf" identifier | (binary_expression "uVar7 & 0xffffffbf" identifier & number_literal)) | number_literal)) ;) (expression_statement "__preg->field_0x38 = __preg->field_0x38 | 0x80;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "__preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" identifier -> field_identifier) | number_literal)) ;) }))) (expression_statement "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;" (assignment_expression "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" identifier -> field_identifier) = (binary_expression "(byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (call_expression "(byte)(((uint)__cflags >> 3 & 1) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uint)__cflags >> 3 & 1) << 4)" ( (binary_expression "((uint)__cflags >> 3 & 1) << 4" (parenthesized_expression "((uint)__cflags >> 3 & 1)" ( (binary_expression "(uint)__cflags >> 3 & 1" (binary_expression "(uint)__cflags >> 3" (cast_expression "(uint)__cflags" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) << number_literal) ))) | (binary_expression "__preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" identifier -> field_identifier) & number_literal))) ;) (expression_statement "__preg->translate = (uchar *)0x0;" (assignment_expression "__preg->translate = (uchar *)0x0" (field_expression "__preg->translate" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar4 = 0xffffffffffffffff;" (assignment_expression "uVar4 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar3 = __pattern;" (assignment_expression "pcVar3 = __pattern" identifier = identifier) ;) (do_statement "do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    }" { (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar3;" (assignment_expression "cVar1 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (expression_statement "pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;" (assignment_expression "pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1" identifier = (binary_expression "pcVar3 + (ulong)bVar8 * -2 + 1" (binary_expression "pcVar3 + (ulong)bVar8 * -2" identifier + (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);" (assignment_expression "iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6)" identifier = (call_expression "FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6)" identifier (argument_list "(__preg,__pattern,~uVar4 - 1,uVar6)" ( identifier , identifier , (binary_expression "~uVar4 - 1" (unary_expression "~uVar4" ~ identifier) - number_literal) , identifier )))) ;) (if_statement "if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0x10)" ( (binary_expression "iVar2 == 0x10" identifier == number_literal) )) (compound_statement "{\n      iVar2 = 8;\n    }" { (expression_statement "iVar2 = 8;" (assignment_expression "iVar2 = 8" identifier = number_literal) ;) }) (else_clause "else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" else (if_statement "if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      re_compile_fastmap(__preg);\n      return 0;\n    }" { (expression_statement "re_compile_fastmap(__preg);" (call_expression "re_compile_fastmap(__preg)" identifier (argument_list "(__preg)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))) (expression_statement "free(__preg->fastmap);" (call_expression "free(__preg->fastmap)" identifier (argument_list "(__preg->fastmap)" ( (field_expression "__preg->fastmap" identifier -> field_identifier) ))) ;) (expression_statement "__preg->fastmap = (char *)0x0;" (assignment_expression "__preg->fastmap = (char *)0x0" (field_expression "__preg->fastmap" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (binary_expression (field_expression IDENT -> field_identifier) & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT | (binary_expression IDENT & LIT)) | LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (binary_expression (field_expression IDENT -> field_identifier) | LIT)) ;) }))) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT) )) << LIT) ))) | (binary_expression (field_expression IDENT -> field_identifier) & LIT))) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (unary_expression ~ IDENT) - LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })))) (expression_statement (call_expression IDENT (argument_list ( (field_expression IDENT -> field_identifier) ))) ;) (expression_statement (assignment_expression (field_expression IDENT -> field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int regcomp(regex_t *__preg,char *__pattern,int __cflags)\n\n{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}" (primitive_type "int") (function_declarator "regcomp(regex_t *__preg,char *__pattern,int __cflags)" (identifier "regcomp") (parameter_list "(regex_t *__preg,char *__pattern,int __cflags)" (( "(") (parameter_declaration "regex_t *__preg" (type_identifier "regex_t") (pointer_declarator "*__preg" (* "*") (identifier "__preg"))) (, ",") (parameter_declaration "char *__pattern" (primitive_type "char") (pointer_declarator "*__pattern" (* "*") (identifier "__pattern"))) (, ",") (parameter_declaration "int __cflags" (primitive_type "int") (identifier "__cflags")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  char *pcVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;\n  __preg->buffer = (uchar *)0x0;\n  __preg->allocated = 0;\n  __preg->used = 0;\n  pcVar3 = (char *)malloc(0x100);\n  __preg->fastmap = pcVar3;\n  if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }\n  return iVar2;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;" (assignment_expression "uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" (identifier "uVar7") (= "=") (binary_expression "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc" (parenthesized_expression "(-(uint)((__cflags & 1U) == 0) & 0xfd4fca)" (( "(") (binary_expression "-(uint)((__cflags & 1U) == 0) & 0xfd4fca" (unary_expression "-(uint)((__cflags & 1U) == 0)" (- "-") (call_expression "(uint)((__cflags & 1U) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((__cflags & 1U) == 0)" (( "(") (binary_expression "(__cflags & 1U) == 0" (parenthesized_expression "(__cflags & 1U)" (( "(") (binary_expression "__cflags & 1U" (identifier "__cflags") (& "&") (number_literal "1U")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xfd4fca")) () ")")) (+ "+") (number_literal "0x3b2fc"))) (; ";")) (expression_statement "__preg->buffer = (uchar *)0x0;" (assignment_expression "__preg->buffer = (uchar *)0x0" (field_expression "__preg->buffer" (identifier "__preg") (-> "->") (field_identifier "buffer")) (= "=") (cast_expression "(uchar *)0x0" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__preg->allocated = 0;" (assignment_expression "__preg->allocated = 0" (field_expression "__preg->allocated" (identifier "__preg") (-> "->") (field_identifier "allocated")) (= "=") (number_literal "0")) (; ";")) (expression_statement "__preg->used = 0;" (assignment_expression "__preg->used = 0" (field_expression "__preg->used" (identifier "__preg") (-> "->") (field_identifier "used")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar3 = (char *)malloc(0x100);" (assignment_expression "pcVar3 = (char *)malloc(0x100)" (identifier "pcVar3") (= "=") (cast_expression "(char *)malloc(0x100)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0x100)" (identifier "malloc") (argument_list "(0x100)" (( "(") (number_literal "0x100") () ")"))))) (; ";")) (expression_statement "__preg->fastmap = pcVar3;" (assignment_expression "__preg->fastmap = pcVar3" (field_expression "__preg->fastmap" (identifier "__preg") (-> "->") (field_identifier "fastmap")) (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n    iVar2 = 0xc;\n  }\n  else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar2 = 0xc;\n  }" ({ "{") (expression_statement "iVar2 = 0xc;" (assignment_expression "iVar2 = 0xc" (identifier "iVar2") (= "=") (number_literal "0xc")) (; ";")) (} "}")) (else_clause "else {\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" (else "else") (compound_statement "{\n    uVar5 = (__cflags & 2U) << 0x15;\n    uVar6 = uVar5 | uVar7;\n    if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }\n    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;\n    __preg->translate = (uchar *)0x0;\n    uVar4 = 0xffffffffffffffff;\n    pcVar3 = __pattern;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);\n    if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }\n    free(__preg->fastmap);\n    __preg->fastmap = (char *)0x0;\n  }" ({ "{") (expression_statement "uVar5 = (__cflags & 2U) << 0x15;" (assignment_expression "uVar5 = (__cflags & 2U) << 0x15" (identifier "uVar5") (= "=") (binary_expression "(__cflags & 2U) << 0x15" (parenthesized_expression "(__cflags & 2U)" (( "(") (binary_expression "__cflags & 2U" (identifier "__cflags") (& "&") (number_literal "2U")) () ")")) (<< "<<") (number_literal "0x15"))) (; ";")) (expression_statement "uVar6 = uVar5 | uVar7;" (assignment_expression "uVar6 = uVar5 | uVar7" (identifier "uVar6") (= "=") (binary_expression "uVar5 | uVar7" (identifier "uVar5") (| "|") (identifier "uVar7"))) (; ";")) (if_statement "if ((__cflags & 4U) == 0) {\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }\n    else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" (if "if") (parenthesized_expression "((__cflags & 4U) == 0)" (( "(") (binary_expression "(__cflags & 4U) == 0" (parenthesized_expression "(__cflags & 4U)" (( "(") (binary_expression "__cflags & 4U" (identifier "__cflags") (& "&") (number_literal "4U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      __preg->field_0x38 = __preg->field_0x38 & 0x7f;\n    }" ({ "{") (expression_statement "__preg->field_0x38 = __preg->field_0x38 & 0x7f;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" (identifier "__preg") (-> "->") (field_identifier "field_0x38")) (= "=") (binary_expression "__preg->field_0x38 & 0x7f" (field_expression "__preg->field_0x38" (identifier "__preg") (-> "->") (field_identifier "field_0x38")) (& "&") (number_literal "0x7f"))) (; ";")) (} "}")) (else_clause "else {\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" (else "else") (compound_statement "{\n      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;\n      __preg->field_0x38 = __preg->field_0x38 | 0x80;\n    }" ({ "{") (expression_statement "uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;" (assignment_expression "uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100" (identifier "uVar6") (= "=") (binary_expression "uVar5 | uVar7 & 0xffffffbf | 0x100" (binary_expression "uVar5 | uVar7 & 0xffffffbf" (identifier "uVar5") (| "|") (binary_expression "uVar7 & 0xffffffbf" (identifier "uVar7") (& "&") (number_literal "0xffffffbf"))) (| "|") (number_literal "0x100"))) (; ";")) (expression_statement "__preg->field_0x38 = __preg->field_0x38 | 0x80;" (assignment_expression "__preg->field_0x38 = __preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" (identifier "__preg") (-> "->") (field_identifier "field_0x38")) (= "=") (binary_expression "__preg->field_0x38 | 0x80" (field_expression "__preg->field_0x38" (identifier "__preg") (-> "->") (field_identifier "field_0x38")) (| "|") (number_literal "0x80"))) (; ";")) (} "}")))) (expression_statement "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;" (assignment_expression "__preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" (identifier "__preg") (-> "->") (field_identifier "field_0x38")) (= "=") (binary_expression "(byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef" (call_expression "(byte)(((uint)__cflags >> 3 & 1) << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((uint)__cflags >> 3 & 1) << 4)" (( "(") (binary_expression "((uint)__cflags >> 3 & 1) << 4" (parenthesized_expression "((uint)__cflags >> 3 & 1)" (( "(") (binary_expression "(uint)__cflags >> 3 & 1" (binary_expression "(uint)__cflags >> 3" (cast_expression "(uint)__cflags" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "__cflags")) (>> ">>") (number_literal "3")) (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "4")) () ")"))) (| "|") (binary_expression "__preg->field_0x38 & 0xef" (field_expression "__preg->field_0x38" (identifier "__preg") (-> "->") (field_identifier "field_0x38")) (& "&") (number_literal "0xef")))) (; ";")) (expression_statement "__preg->translate = (uchar *)0x0;" (assignment_expression "__preg->translate = (uchar *)0x0" (field_expression "__preg->translate" (identifier "__preg") (-> "->") (field_identifier "translate")) (= "=") (cast_expression "(uchar *)0x0" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar4 = 0xffffffffffffffff;" (assignment_expression "uVar4 = 0xffffffffffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar3 = __pattern;" (assignment_expression "pcVar3 = __pattern" (identifier "pcVar3") (= "=") (identifier "__pattern")) (; ";")) (do_statement "do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      cVar1 = *pcVar3;\n      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;\n    }" ({ "{") (if_statement "if (uVar4 == 0) break;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar3;" (assignment_expression "cVar1 = *pcVar3" (identifier "cVar1") (= "=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (; ";")) (expression_statement "pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;" (assignment_expression "pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1" (identifier "pcVar3") (= "=") (binary_expression "pcVar3 + (ulong)bVar8 * -2 + 1" (binary_expression "pcVar3 + (ulong)bVar8 * -2" (identifier "pcVar3") (+ "+") (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);" (assignment_expression "iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6)" (identifier "iVar2") (= "=") (call_expression "FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6)" (identifier "FUN_00175b75") (argument_list "(__preg,__pattern,~uVar4 - 1,uVar6)" (( "(") (identifier "__preg") (, ",") (identifier "__pattern") (, ",") (binary_expression "~uVar4 - 1" (unary_expression "~uVar4" (~ "~") (identifier "uVar4")) (- "-") (number_literal "1")) (, ",") (identifier "uVar6") () ")")))) (; ";")) (if_statement "if (iVar2 == 0x10) {\n      iVar2 = 8;\n    }\n    else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0x10)" (( "(") (binary_expression "iVar2 == 0x10" (identifier "iVar2") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      iVar2 = 8;\n    }" ({ "{") (expression_statement "iVar2 = 8;" (assignment_expression "iVar2 = 8" (identifier "iVar2") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" (else "else") (if_statement "if (iVar2 == 0) {\n      re_compile_fastmap(__preg);\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      re_compile_fastmap(__preg);\n      return 0;\n    }" ({ "{") (expression_statement "re_compile_fastmap(__preg);" (call_expression "re_compile_fastmap(__preg)" (identifier "re_compile_fastmap") (argument_list "(__preg)" (( "(") (identifier "__preg") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))))) (expression_statement "free(__preg->fastmap);" (call_expression "free(__preg->fastmap)" (identifier "free") (argument_list "(__preg->fastmap)" (( "(") (field_expression "__preg->fastmap" (identifier "__preg") (-> "->") (field_identifier "fastmap")) () ")"))) (; ";")) (expression_statement "__preg->fastmap = (char *)0x0;" (assignment_expression "__preg->fastmap = (char *)0x0" (field_expression "__preg->fastmap" (identifier "__preg") (-> "->") (field_identifier "fastmap")) (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

int function_1(type_1 *__preg,char *__pattern,int var_1)

{
  char var_6;
  type_2 var_8;
  char *var_3;
  type_3 var_4;
  type_4 syntax;
  type_3 var_5;
  type_5 bVar6;
  
  bVar6 = 0;
  var_5 = (type_3)(-(type_7)((var_1 & 1U) == 0) & 0xfd4fca) + 0x3b2fc;
  __preg->buffer = (type_6 *)0x0;
  __preg->allocated = 0;
  __preg->used = 0;
  var_3 = (char *)var_2(0x100);
  __preg->fastmap = var_3;
  if (var_3 == (char *)0x0) {
    var_8 = _REG_ESPACE;
  }
  else {
    var_4 = (type_3)((var_1 & 2U) << 0x15);
    syntax = var_4 | var_5;
    if ((var_1 & 4U) == 0) {
      __preg->field_0x38 = __preg->field_0x38 & 0x7f;
    }
    else {
      syntax = var_4 | var_5 & 0xffffffffffffffbf | 0x100;
      __preg->field_0x38 = __preg->field_0x38 | 0x80;
    }
    __preg->field_0x38 = (type_5)(((type_7)var_1 >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;
    __preg->translate = (type_6 *)0x0;
    var_5 = 0xffffffffffffffff;
    var_3 = __pattern;
    do {
      if (var_5 == 0) break;
      var_5 = var_5 - 1;
      var_6 = *var_3;
      var_3 = var_3 + (type_3)bVar6 * -2 + 1;
    } while (var_6 != '\0');
    var_8 = var_7((type_1 *)__preg,__pattern,~var_5 - 1,syntax);
    if (var_8 == var_9) {
      var_8 = _REG_EPAREN;
    }
    else if (var_8 == var_10) {
      var_11(__preg);
      return 0;
    }
    var_12(__preg->fastmap);
    __preg->fastmap = (char *)0x0;
  }
  return var_8;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (number_literal))) right: (number_literal)))) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (return_statement (identifier)))))

int MASKED(regex_t *__preg,char *__pattern,int __cflags)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  ulong uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  byte bVar8;
  
  bVar8 = 0;
  uVar7 = (-(uint)((__cflags & 1U) == 0) & 0xfd4fca) + 0x3b2fc;
  __preg->buffer = (uchar *)0x0;
  __preg->allocated = 0;
  __preg->used = 0;
  pcVar3 = (char *)malloc(0x100);
  __preg->fastmap = pcVar3;
  if (pcVar3 == (char *)0x0) {
    iVar2 = 0xc;
  }
  else {
    uVar5 = (__cflags & 2U) << 0x15;
    uVar6 = uVar5 | uVar7;
    if ((__cflags & 4U) == 0) {
      __preg->field_0x38 = __preg->field_0x38 & 0x7f;
    }
    else {
      uVar6 = uVar5 | uVar7 & 0xffffffbf | 0x100;
      __preg->field_0x38 = __preg->field_0x38 | 0x80;
    }
    __preg->field_0x38 = (byte)(((uint)__cflags >> 3 & 1) << 4) | __preg->field_0x38 & 0xef;
    __preg->translate = (uchar *)0x0;
    uVar4 = 0xffffffffffffffff;
    pcVar3 = __pattern;
    do {
      if (uVar4 == 0) break;
      uVar4 = uVar4 - 1;
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + (ulong)bVar8 * -2 + 1;
    } while (cVar1 != '\0');
    iVar2 = FUN_00175b75(__preg,__pattern,~uVar4 - 1,uVar6);
    if (iVar2 == 0x10) {
      iVar2 = 8;
    }
    else if (iVar2 == 0) {
      re_compile_fastmap(__preg);
      return 0;
    }
    free(__preg->fastmap);
    __preg->fastmap = (char *)0x0;
  }
  return iVar2;
}

