
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint __regparm3 re_string_context_at(re_string_t *input,Idx idx,int eflags)

{
  wint_t __wc;
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (idx < 0) {
LAB_000910a0:
    return input->tip_context;
  }
  if (input->len == idx) {
    uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;
  }
  else {
    if (1 < input->mb_cur_max) {
      do {
        __wc = input->wcs[idx];
        if (__wc != 0xffffffff) {
          if ((input->word_ops_used != '\0') &&
             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {
            return 1;
          }
          if (__wc != 10) {
            return 0;
          }
          goto LAB_000910d3;
        }
        idx = idx + -1;
      } while (idx != -1);
      goto LAB_000910a0;
    }
    uVar3 = (uint)input->mbs[idx];
    uVar1 = 1;
    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)
       ) {
LAB_000910d3:
      return (uint)(input->newline_anchor != '\0') * 2;
    }
  }
  return uVar1;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 FUN_00091050(int param_1,int param_2,uint param_3)

{
  wint_t __wc;
  int iVar1;
  uint uVar2;
  
  if (param_2 < 0) {
LAB_000910a0:
    return *(int *)(param_1 + 0x3c);
  }
  if (*(int *)(param_1 + 0x30) == param_2) {
    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;
  }
  else {
    if (1 < *(int *)(param_1 + 0x50)) {
      do {
        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);
        if (__wc != 0xffffffff) {
          if ((*(char *)(param_1 + 0x4e) != '\0') &&
             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {
            return 1;
          }
          if (__wc != 10) {
            return 0;
          }
          goto LAB_000910d3;
        }
        param_2 = param_2 + -1;
      } while (param_2 != -1);
      goto LAB_000910a0;
    }
    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);
    iVar1 = 1;
    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)
       && (iVar1 = 0, uVar2 == 10)) {
LAB_000910d3:
      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;
    }
  }
  return iVar1;
}


PUSH EDI
PUSH ESI
MOV EDI,EAX
PUSH EBX
CALL 0x00016f80
ADD EBX,0x4bc8a
TEST EDX,EDX
JS 0x000910a0
CMP dword ptr [EAX + 0x30],EDX
JZ 0x000910e8
CMP dword ptr [EAX + 0x50],0x1
JLE 0x000910b0
MOV EAX,dword ptr [EAX + 0x8]
JMP 0x00091080
SUB EDX,0x1
CMP EDX,-0x1
JZ 0x000910a0
MOV ESI,dword ptr [EAX + EDX*0x4]
CMP ESI,-0x1
JZ 0x00091078
CMP byte ptr [EDI + 0x4e],0x0
JNZ 0x000910f8
XOR EAX,EAX
CMP ESI,0xa
JZ 0x000910d3
POP EBX
POP ESI
POP EDI
RET
MOV EAX,dword ptr [EDI + 0x3c]
POP EBX
POP ESI
POP EDI
RET
MOV EAX,dword ptr [EAX + 0x4]
MOVZX ECX,byte ptr [EAX + EDX*0x1]
MOV EAX,dword ptr [EDI + 0x44]
MOV EBX,ECX
SAR EBX,0x5
MOV EBX,dword ptr [EAX + EBX*0x4]
MOV EAX,0x1
BT EBX,ECX
JC 0x00091095
XOR EAX,EAX
CMP ECX,0xa
JNZ 0x00091095
XOR EAX,EAX
CMP byte ptr [EDI + 0x4d],0x0
POP EBX
POP ESI
POP EDI
SETNZ AL
ADD EAX,EAX
RET
AND ECX,0x2
CMP ECX,0x1
SBB EAX,EAX
AND EAX,0x2
ADD EAX,0x8
JMP 0x00091095
SUB ESP,0xc
PUSH ESI
CALL 0x00014310
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0009110d
CMP ESI,0x5f
JNZ 0x0009108e
MOV EAX,0x1
JMP 0x00091095
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_00091050(int param_1,int param_2,uint param_3)\n\n{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}\n\n" comment (function_definition "int __regparm3 FUN_00091050(int param_1,int param_2,uint param_3)\n\n{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00091050(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}" { (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }" { (labeled_statement "LAB_000910a0:\n    return *(int *)(param_1 + 0x3c);" statement_identifier : (return_statement "return *(int *)(param_1 + 0x3c);" return (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ;)) })) (if_statement "if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x30) == param_2)" ( (binary_expression "*(int *)(param_1 + 0x30) == param_2" (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }" { (expression_statement "iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;" (assignment_expression "iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8" identifier = (binary_expression "(-(uint)((param_3 & 2) == 0) & 2) + 8" (parenthesized_expression "(-(uint)((param_3 & 2) == 0) & 2)" ( (binary_expression "-(uint)((param_3 & 2) == 0) & 2" (unary_expression "-(uint)((param_3 & 2) == 0)" - (call_expression "(uint)((param_3 & 2) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_3 & 2) == 0)" ( (binary_expression "(param_3 & 2) == 0" (parenthesized_expression "(param_3 & 2)" ( (binary_expression "param_3 & 2" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" else (compound_statement "{\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" { (if_statement "if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }" if (parenthesized_expression "(1 < *(int *)(param_1 + 0x50))" ( (binary_expression "1 < *(int *)(param_1 + 0x50)" number_literal < (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) )) (compound_statement "{\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }" { (do_statement "do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);" do (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      }" { (expression_statement "__wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" identifier = (pointer_expression "*(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" * (cast_expression "(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + param_2 * 4)" ( (binary_expression "*(int *)(param_1 + 8) + param_2 * 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (binary_expression "param_2 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" if (parenthesized_expression "(__wc != 0xffffffff)" ( (binary_expression "__wc != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" { (if_statement "if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }" if (parenthesized_expression "((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f))))" ( (binary_expression "(*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))" (parenthesized_expression "(*(char *)(param_1 + 0x4e) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x4e) != '\0'" (pointer_expression "*(char *)(param_1 + 0x4e)" * (cast_expression "(char *)(param_1 + 0x4e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4e)" ( (binary_expression "param_1 + 0x4e" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))" ( (parenthesized_expression "(iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f))" ( (comma_expression "iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)" (assignment_expression "iVar1 = iswalnum(__wc)" identifier = (call_expression "iswalnum(__wc)" identifier (argument_list "(__wc)" ( identifier )))) , (binary_expression "iVar1 != 0 || (__wc == 0x5f)" (binary_expression "iVar1 != 0" identifier != number_literal) || (parenthesized_expression "(__wc == 0x5f)" ( (binary_expression "__wc == 0x5f" identifier == number_literal) )))) )) ))) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (__wc != 10) {\n            return 0;\n          }" if (parenthesized_expression "(__wc != 10)" ( (binary_expression "__wc != 10" identifier != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000910d3;" goto statement_identifier ;) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != -1)" ( (binary_expression "param_2 != -1" identifier != number_literal) )) ;) (goto_statement "goto LAB_000910a0;" goto statement_identifier ;) })) (expression_statement "uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);" (assignment_expression "uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2)" identifier = (binary_expression "(uint)*(byte *)(*(int *)(param_1 + 4) + param_2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(param_1 + 4) + param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + param_2)" ( (binary_expression "*(int *)(param_1 + 4) + param_2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + identifier) ))))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }" if (parenthesized_expression "(((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10))" ( (binary_expression "((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)" (parenthesized_expression "((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" ( (binary_expression "*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) + (binary_expression "((int)uVar2 >> 5) * 4" (parenthesized_expression "((int)uVar2 >> 5)" ( (binary_expression "(int)uVar2 >> 5" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal)) )))) >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar1 = 0, uVar2 == 10)" ( (comma_expression "iVar1 = 0, uVar2 == 10" (assignment_expression "iVar1 = 0" identifier = number_literal) , (binary_expression "uVar2 == 10" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }" { (labeled_statement "LAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;" statement_identifier : (return_statement "return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;" return (binary_expression "(uint)(*(char *)(param_1 + 0x4d) != '\0') * 2" (call_expression "(uint)(*(char *)(param_1 + 0x4d) != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_1 + 0x4d) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x4d) != '\0'" (pointer_expression "*(char *)(param_1 + 0x4d)" * (cast_expression "(char *)(param_1 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4d)" ( (binary_expression "param_1 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) * number_literal) ;)) })) }))) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint __regparm3 re_string_context_at(re_string_t *input,Idx idx,int eflags)\n\n{\n  wint_t __wc;\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  if (idx < 0) {\nLAB_000910a0:\n    return input->tip_context;\n  }\n  if (input->len == idx) {\n    uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }\n    uVar3 = (uint)input->mbs[idx];\n    uVar1 = 1;\n    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }\n  }\n  return uVar1;\n}\n\n" comment (function_definition "uint __regparm3 re_string_context_at(re_string_t *input,Idx idx,int eflags)\n\n{\n  wint_t __wc;\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  if (idx < 0) {\nLAB_000910a0:\n    return input->tip_context;\n  }\n  if (input->len == idx) {\n    uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }\n    uVar3 = (uint)input->mbs[idx];\n    uVar1 = 1;\n    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }\n  }\n  return uVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "re_string_context_at(re_string_t *input,Idx idx,int eflags)" identifier (parameter_list "(re_string_t *input,Idx idx,int eflags)" ( (parameter_declaration "re_string_t *input" type_identifier (pointer_declarator "*input" * identifier)) , (parameter_declaration "Idx idx" type_identifier identifier) , (parameter_declaration "int eflags" primitive_type identifier) ))) (compound_statement "{\n  wint_t __wc;\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  if (idx < 0) {\nLAB_000910a0:\n    return input->tip_context;\n  }\n  if (input->len == idx) {\n    uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }\n    uVar3 = (uint)input->mbs[idx];\n    uVar1 = 1;\n    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }\n  }\n  return uVar1;\n}" { (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (if_statement "if (idx < 0) {\nLAB_000910a0:\n    return input->tip_context;\n  }" if (parenthesized_expression "(idx < 0)" ( (binary_expression "idx < 0" identifier < number_literal) )) (compound_statement "{\nLAB_000910a0:\n    return input->tip_context;\n  }" { (labeled_statement "LAB_000910a0:\n    return input->tip_context;" statement_identifier : (return_statement "return input->tip_context;" return (field_expression "input->tip_context" identifier -> field_identifier) ;)) })) (if_statement "if (input->len == idx) {\n    uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }\n    uVar3 = (uint)input->mbs[idx];\n    uVar1 = 1;\n    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }\n  }" if (parenthesized_expression "(input->len == idx)" ( (binary_expression "input->len == idx" (field_expression "input->len" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;\n  }" { (expression_statement "uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8;" (assignment_expression "uVar1 = (-(uint)((eflags & 2U) == 0) & 2) + 8" identifier = (binary_expression "(-(uint)((eflags & 2U) == 0) & 2) + 8" (parenthesized_expression "(-(uint)((eflags & 2U) == 0) & 2)" ( (binary_expression "-(uint)((eflags & 2U) == 0) & 2" (unary_expression "-(uint)((eflags & 2U) == 0)" - (call_expression "(uint)((eflags & 2U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((eflags & 2U) == 0)" ( (binary_expression "(eflags & 2U) == 0" (parenthesized_expression "(eflags & 2U)" ( (binary_expression "eflags & 2U" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\n    if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }\n    uVar3 = (uint)input->mbs[idx];\n    uVar1 = 1;\n    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }\n  }" else (compound_statement "{\n    if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }\n    uVar3 = (uint)input->mbs[idx];\n    uVar1 = 1;\n    if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }\n  }" { (if_statement "if (1 < input->mb_cur_max) {\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }" if (parenthesized_expression "(1 < input->mb_cur_max)" ( (binary_expression "1 < input->mb_cur_max" number_literal < (field_expression "input->mb_cur_max" identifier -> field_identifier)) )) (compound_statement "{\n      do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);\n      goto LAB_000910a0;\n    }" { (do_statement "do {\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      } while (idx != -1);" do (compound_statement "{\n        __wc = input->wcs[idx];\n        if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        idx = idx + -1;\n      }" { (expression_statement "__wc = input->wcs[idx];" (assignment_expression "__wc = input->wcs[idx]" identifier = (subscript_expression "input->wcs[idx]" (field_expression "input->wcs" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (__wc != 0xffffffff) {\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" if (parenthesized_expression "(__wc != 0xffffffff)" ( (binary_expression "__wc != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n          if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" { (if_statement "if ((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }" if (parenthesized_expression "((input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f))))" ( (binary_expression "(input->word_ops_used != '\0') &&\n             ((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))" (parenthesized_expression "(input->word_ops_used != '\0')" ( (binary_expression "input->word_ops_used != '\0'" (field_expression "input->word_ops_used" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)))" ( (parenthesized_expression "(iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f))" ( (comma_expression "iVar2 = iswalnum(__wc), iVar2 != 0 || (__wc == 0x5f)" (assignment_expression "iVar2 = iswalnum(__wc)" identifier = (call_expression "iswalnum(__wc)" identifier (argument_list "(__wc)" ( identifier )))) , (binary_expression "iVar2 != 0 || (__wc == 0x5f)" (binary_expression "iVar2 != 0" identifier != number_literal) || (parenthesized_expression "(__wc == 0x5f)" ( (binary_expression "__wc == 0x5f" identifier == number_literal) )))) )) ))) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (__wc != 10) {\n            return 0;\n          }" if (parenthesized_expression "(__wc != 10)" ( (binary_expression "__wc != 10" identifier != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000910d3;" goto statement_identifier ;) })) (expression_statement "idx = idx + -1;" (assignment_expression "idx = idx + -1" identifier = (binary_expression "idx + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(idx != -1)" ( (binary_expression "idx != -1" identifier != number_literal) )) ;) (goto_statement "goto LAB_000910a0;" goto statement_identifier ;) })) (expression_statement "uVar3 = (uint)input->mbs[idx];" (assignment_expression "uVar3 = (uint)input->mbs[idx]" identifier = (cast_expression "(uint)input->mbs[idx]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "input->mbs[idx]" (field_expression "input->mbs" identifier -> field_identifier) [ identifier ]))) ;) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (if_statement "if (((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       ) {\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }" if (parenthesized_expression "(((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)\n       )" ( (binary_expression "((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0) && (uVar1 = 0, uVar3 == 10)" (parenthesized_expression "((input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0)" ( (binary_expression "(input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1)" ( (binary_expression "input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f) & 1" (binary_expression "input->word_char[(int)uVar3 >> 5] >> (uVar3 & 0x1f)" (subscript_expression "input->word_char[(int)uVar3 >> 5]" (field_expression "input->word_char" identifier -> field_identifier) [ (binary_expression "(int)uVar3 >> 5" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar1 = 0, uVar3 == 10)" ( (comma_expression "uVar1 = 0, uVar3 == 10" (assignment_expression "uVar1 = 0" identifier = number_literal) , (binary_expression "uVar3 == 10" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;\n    }" { (labeled_statement "LAB_000910d3:\n      return (uint)(input->newline_anchor != '\0') * 2;" statement_identifier : (return_statement "return (uint)(input->newline_anchor != '\0') * 2;" return (binary_expression "(uint)(input->newline_anchor != '\0') * 2" (call_expression "(uint)(input->newline_anchor != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(input->newline_anchor != '\0')" ( (binary_expression "input->newline_anchor != '\0'" (field_expression "input->newline_anchor" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) * number_literal) ;)) })) }))) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "int __regparm3 FUN_00091050(int param_1,int param_2,uint param_3)\n\n{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}\n\n" (function_definition "int __regparm3 FUN_00091050(int param_1,int param_2,uint param_3)\n\n{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00091050(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}" { (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }" { (labeled_statement "LAB_000910a0:\n    return *(int *)(param_1 + 0x3c);" statement_identifier : (return_statement "return *(int *)(param_1 + 0x3c);" return (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ;)) })) (if_statement "if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x30) == param_2)" ( (binary_expression "*(int *)(param_1 + 0x30) == param_2" (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }" { (expression_statement "iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;" (assignment_expression "iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8" identifier = (binary_expression "(-(uint)((param_3 & 2) == 0) & 2) + 8" (parenthesized_expression "(-(uint)((param_3 & 2) == 0) & 2)" ( (binary_expression "-(uint)((param_3 & 2) == 0) & 2" (unary_expression "-(uint)((param_3 & 2) == 0)" - (call_expression "(uint)((param_3 & 2) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_3 & 2) == 0)" ( (binary_expression "(param_3 & 2) == 0" (parenthesized_expression "(param_3 & 2)" ( (binary_expression "param_3 & 2" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" else (compound_statement "{\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" { (if_statement "if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }" if (parenthesized_expression "(1 < *(int *)(param_1 + 0x50))" ( (binary_expression "1 < *(int *)(param_1 + 0x50)" number_literal < (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) )) (compound_statement "{\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }" { (do_statement "do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);" do (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      }" { (expression_statement "__wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" identifier = (pointer_expression "*(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" * (cast_expression "(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + param_2 * 4)" ( (binary_expression "*(int *)(param_1 + 8) + param_2 * 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (binary_expression "param_2 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" if (parenthesized_expression "(__wc != 0xffffffff)" ( (binary_expression "__wc != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" { (if_statement "if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }" if (parenthesized_expression "((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f))))" ( (binary_expression "(*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))" (parenthesized_expression "(*(char *)(param_1 + 0x4e) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x4e) != '\0'" (pointer_expression "*(char *)(param_1 + 0x4e)" * (cast_expression "(char *)(param_1 + 0x4e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4e)" ( (binary_expression "param_1 + 0x4e" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))" ( (parenthesized_expression "(iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f))" ( (comma_expression "iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)" (assignment_expression "iVar1 = iswalnum(__wc)" identifier = (call_expression "iswalnum(__wc)" identifier (argument_list "(__wc)" ( identifier )))) , (binary_expression "iVar1 != 0 || (__wc == 0x5f)" (binary_expression "iVar1 != 0" identifier != number_literal) || (parenthesized_expression "(__wc == 0x5f)" ( (binary_expression "__wc == 0x5f" identifier == number_literal) )))) )) ))) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (__wc != 10) {\n            return 0;\n          }" if (parenthesized_expression "(__wc != 10)" ( (binary_expression "__wc != 10" identifier != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_000910d3;" goto statement_identifier ;) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != -1)" ( (binary_expression "param_2 != -1" identifier != number_literal) )) ;) (goto_statement "goto LAB_000910a0;" goto statement_identifier ;) })) (expression_statement "uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);" (assignment_expression "uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2)" identifier = (binary_expression "(uint)*(byte *)(*(int *)(param_1 + 4) + param_2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(param_1 + 4) + param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + param_2)" ( (binary_expression "*(int *)(param_1 + 4) + param_2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + identifier) ))))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }" if (parenthesized_expression "(((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10))" ( (binary_expression "((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)" (parenthesized_expression "((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" ( (binary_expression "*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) + (binary_expression "((int)uVar2 >> 5) * 4" (parenthesized_expression "((int)uVar2 >> 5)" ( (binary_expression "(int)uVar2 >> 5" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal)) )))) >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar1 = 0, uVar2 == 10)" ( (comma_expression "iVar1 = 0, uVar2 == 10" (assignment_expression "iVar1 = 0" identifier = number_literal) , (binary_expression "uVar2 == 10" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }" { (labeled_statement "LAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;" statement_identifier : (return_statement "return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;" return (binary_expression "(uint)(*(char *)(param_1 + 0x4d) != '\0') * 2" (call_expression "(uint)(*(char *)(param_1 + 0x4d) != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_1 + 0x4d) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x4d) != '\0'" (pointer_expression "*(char *)(param_1 + 0x4d)" * (cast_expression "(char *)(param_1 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4d)" ( (binary_expression "param_1 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) * number_literal) ;)) })) }))) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (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)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) )))) )) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) * LIT) ;)) })) }))) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_00091050(int param_1,int param_2,uint param_3)\n\n{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00091050(int param_1,int param_2,uint param_3)" (identifier "FUN_00091050") (parameter_list "(int param_1,int param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  wint_t __wc;\n  int iVar1;\n  uint uVar2;\n  \n  if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }\n  if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }\n  return iVar1;\n}" ({ "{") (declaration "wint_t __wc;" (type_identifier "wint_t") (identifier "__wc") (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (if_statement "if (param_2 < 0) {\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000910a0:\n    return *(int *)(param_1 + 0x3c);\n  }" ({ "{") (labeled_statement "LAB_000910a0:\n    return *(int *)(param_1 + 0x3c);" (statement_identifier "LAB_000910a0") (: ":") (return_statement "return *(int *)(param_1 + 0x3c);" (return "return") (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (; ";"))) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x30) == param_2) {\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }\n  else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x30) == param_2)" (( "(") (binary_expression "*(int *)(param_1 + 0x30) == param_2" (pointer_expression "*(int *)(param_1 + 0x30)" (* "*") (cast_expression "(int *)(param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (identifier "param_2")) () ")")) (compound_statement "{\n    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;\n  }" ({ "{") (expression_statement "iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;" (assignment_expression "iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8" (identifier "iVar1") (= "=") (binary_expression "(-(uint)((param_3 & 2) == 0) & 2) + 8" (parenthesized_expression "(-(uint)((param_3 & 2) == 0) & 2)" (( "(") (binary_expression "-(uint)((param_3 & 2) == 0) & 2" (unary_expression "-(uint)((param_3 & 2) == 0)" (- "-") (call_expression "(uint)((param_3 & 2) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((param_3 & 2) == 0)" (( "(") (binary_expression "(param_3 & 2) == 0" (parenthesized_expression "(param_3 & 2)" (( "(") (binary_expression "param_3 & 2" (identifier "param_3") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "2")) () ")")) (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" (else "else") (compound_statement "{\n    if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }\n    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);\n    iVar1 = 1;\n    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }\n  }" ({ "{") (if_statement "if (1 < *(int *)(param_1 + 0x50)) {\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }" (if "if") (parenthesized_expression "(1 < *(int *)(param_1 + 0x50))" (( "(") (binary_expression "1 < *(int *)(param_1 + 0x50)" (number_literal "1") (< "<") (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (compound_statement "{\n      do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);\n      goto LAB_000910a0;\n    }" ({ "{") (do_statement "do {\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      } while (param_2 != -1);" (do "do") (compound_statement "{\n        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);\n        if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }\n        param_2 = param_2 + -1;\n      }" ({ "{") (expression_statement "__wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);" (assignment_expression "__wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" (identifier "__wc") (= "=") (pointer_expression "*(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" (* "*") (cast_expression "(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4)" (( "(") (type_descriptor "wint_t *" (type_identifier "wint_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + param_2 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 8) + param_2 * 4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (__wc != 0xffffffff) {\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" (if "if") (parenthesized_expression "(__wc != 0xffffffff)" (( "(") (binary_expression "__wc != 0xffffffff" (identifier "__wc") (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }\n          if (__wc != 10) {\n            return 0;\n          }\n          goto LAB_000910d3;\n        }" ({ "{") (if_statement "if ((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {\n            return 1;\n          }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f))))" (( "(") (binary_expression "(*(char *)(param_1 + 0x4e) != '\0') &&\n             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))" (parenthesized_expression "(*(char *)(param_1 + 0x4e) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x4e) != '\0'" (pointer_expression "*(char *)(param_1 + 0x4e)" (* "*") (cast_expression "(char *)(param_1 + 0x4e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4e)" (( "(") (binary_expression "param_1 + 0x4e" (identifier "param_1") (+ "+") (number_literal "0x4e")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))" (( "(") (parenthesized_expression "(iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f))" (( "(") (comma_expression "iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)" (assignment_expression "iVar1 = iswalnum(__wc)" (identifier "iVar1") (= "=") (call_expression "iswalnum(__wc)" (identifier "iswalnum") (argument_list "(__wc)" (( "(") (identifier "__wc") () ")")))) (, ",") (binary_expression "iVar1 != 0 || (__wc == 0x5f)" (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(__wc == 0x5f)" (( "(") (binary_expression "__wc == 0x5f" (identifier "__wc") (== "==") (number_literal "0x5f")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n            return 1;\n          }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (__wc != 10) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(__wc != 10)" (( "(") (binary_expression "__wc != 10" (identifier "__wc") (!= "!=") (number_literal "10")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_000910d3;" (goto "goto") (statement_identifier "LAB_000910d3") (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != -1)" (( "(") (binary_expression "param_2 != -1" (identifier "param_2") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (goto_statement "goto LAB_000910a0;" (goto "goto") (statement_identifier "LAB_000910a0") (; ";")) (} "}"))) (expression_statement "uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);" (assignment_expression "uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(byte *)(*(int *)(param_1 + 4) + param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(param_1 + 4) + param_2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + param_2)" (( "(") (binary_expression "*(int *)(param_1 + 4) + param_2" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "param_2")) () ")"))))) (; ";")) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" (identifier "iVar1") (= "=") (number_literal "1")) (; ";")) (if_statement "if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)) {\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }" (if "if") (parenthesized_expression "(((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10))" (( "(") (binary_expression "((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)\n       && (iVar1 = 0, uVar2 == 10)" (parenthesized_expression "((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (binary_expression "((int)uVar2 >> 5) * 4" (parenthesized_expression "((int)uVar2 >> 5)" (( "(") (binary_expression "(int)uVar2 >> 5" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = 0, uVar2 == 10)" (( "(") (comma_expression "iVar1 = 0, uVar2 == 10" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (, ",") (binary_expression "uVar2 == 10" (identifier "uVar2") (== "==") (number_literal "10"))) () ")"))) () ")")) (compound_statement "{\nLAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;\n    }" ({ "{") (labeled_statement "LAB_000910d3:\n      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;" (statement_identifier "LAB_000910d3") (: ":") (return_statement "return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;" (return "return") (binary_expression "(uint)(*(char *)(param_1 + 0x4d) != '\0') * 2" (call_expression "(uint)(*(char *)(param_1 + 0x4d) != '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(param_1 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x4d) != '\0'" (pointer_expression "*(char *)(param_1 + 0x4d)" (* "*") (cast_expression "(char *)(param_1 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4d)" (( "(") (binary_expression "param_1 + 0x4d" (identifier "param_1") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) (* "*") (number_literal "2")) (; ";"))) (} "}"))) (} "}")))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 __regparm3 function_1(type_2 *input,type_3 var_1,int var_2)

{
  type_4 var_3;
  type_1 uVar1;
  int var_5;
  type_1 var_6;
  
  if (var_1 < 0) {
LAB_000910a0:
    return input->tip_context;
  }
  if (input->len == var_1) {
    uVar1 = (-(type_1)((var_2 & 2U) == 0) & 2) + 8;
  }
  else {
    if (1 < input->mb_cur_max) {
      do {
        var_3 = input->wcs[var_1];
        if (var_3 != 0xffffffff) {
          if ((input->word_ops_used != '\0') &&
             ((var_5 = var_4(var_3), var_5 != 0 || (var_3 == 0x5f)))) {
            return 1;
          }
          if (var_3 != 10) {
            return 0;
          }
          goto LAB_000910d3;
        }
        var_1 = var_1 + -1;
      } while (var_1 != -1);
      goto LAB_000910a0;
    }
    var_6 = (type_1)input->mbs[var_1];
    uVar1 = 1;
    if (((input->word_char[(int)var_6 >> 5] >> (var_6 & 0x1f) & 1) == 0) && (uVar1 = 0, var_6 == 10)
       ) {
LAB_000910d3:
      return (type_1)(input->newline_anchor != '\0') * 2;
    }
  }
  return uVar1;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 MASKED(int param_1,int param_2,uint param_3)

{
  wint_t __wc;
  int iVar1;
  uint uVar2;
  
  if (param_2 < 0) {
LAB_000910a0:
    return *(int *)(param_1 + 0x3c);
  }
  if (*(int *)(param_1 + 0x30) == param_2) {
    iVar1 = (-(uint)((param_3 & 2) == 0) & 2) + 8;
  }
  else {
    if (1 < *(int *)(param_1 + 0x50)) {
      do {
        __wc = *(wint_t *)(*(int *)(param_1 + 8) + param_2 * 4);
        if (__wc != 0xffffffff) {
          if ((*(char *)(param_1 + 0x4e) != '\0') &&
             ((iVar1 = iswalnum(__wc), iVar1 != 0 || (__wc == 0x5f)))) {
            return 1;
          }
          if (__wc != 10) {
            return 0;
          }
          goto LAB_000910d3;
        }
        param_2 = param_2 + -1;
      } while (param_2 != -1);
      goto LAB_000910a0;
    }
    uVar2 = (uint)*(byte *)(*(int *)(param_1 + 4) + param_2);
    iVar1 = 1;
    if (((*(uint *)(*(int *)(param_1 + 0x44) + ((int)uVar2 >> 5) * 4) >> (uVar2 & 0x1f) & 1) == 0)
       && (iVar1 = 0, uVar2 == 10)) {
LAB_000910d3:
      return (uint)(*(char *)(param_1 + 0x4d) != '\0') * 2;
    }
  }
  return iVar1;
}

