
_Bool check_dst_limits(re_match_context_t *mctx,re_node_set *limits,Idx dst_node,Idx dst_idx,
                      Idx src_node,Idx src_idx)

{
  re_dfa_t *prVar1;
  Idx subexp_idx;
  wchar_t wVar2;
  wchar_t wVar3;
  Idx bkref_idx;
  Idx bkref_idx_00;
  long lVar4;
  
  prVar1 = mctx->dfa;
  bkref_idx = search_cur_bkref_entry(mctx,dst_idx);
  bkref_idx_00 = search_cur_bkref_entry(mctx,src_idx);
  if (0 < limits->nelem) {
    lVar4 = 0;
    do {
      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;
      wVar2 = check_dst_limits_calc_pos
                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);
      wVar3 = check_dst_limits_calc_pos
                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);
      if (wVar2 != wVar3) {
        return true;
      }
      lVar4 = lVar4 + 1;
    } while (lVar4 < limits->nelem);
  }
  return false;
}



undefined8
FUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,
            undefined8 param_6)

{
  long *plVar1;
  long lVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  
  plVar1 = *(long **)(param_1 + 0x98);
  uVar6 = FUN_0012696b(param_1,param_4);
  uVar7 = FUN_0012696b(param_1,param_6);
  if (0 < *(long *)(param_2 + 8)) {
    lVar8 = 0;
    do {
      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);
      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);
      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);
      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,
                           param_5,param_6,uVar7);
      if (iVar4 != iVar5) {
        return 1;
      }
      lVar8 = lVar8 + 1;
    } while (lVar8 < *(long *)(param_2 + 8));
  }
  return 0;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV RBX,RDI
MOV RBP,RSI
MOV qword ptr [RSP + 0x18],RDX
MOV R14,RCX
MOV qword ptr [RSP + 0x20],R8
MOV R13,R9
MOV qword ptr [RSP + 0x28],R9
MOV R15,qword ptr [RDI + 0x98]
MOV RSI,RCX
CALL 0x0012696b
MOV qword ptr [RSP + 0x8],RAX
MOV RSI,R13
MOV RDI,RBX
CALL 0x0012696b
MOV qword ptr [RSP + 0x10],RAX
CMP qword ptr [RBP + 0x8],0x0
JLE 0x00126af5
MOV R12D,0x0
MOV RAX,qword ptr [RBP + 0x10]
MOV RSI,qword ptr [RAX + R12*0x8]
LEA RAX,[RSI + RSI*0x4]
SHL RAX,0x3
ADD RAX,qword ptr [RBX + 0xd8]
MOV RAX,qword ptr [RAX]
SHL RAX,0x4
ADD RAX,qword ptr [R15]
MOV R13,qword ptr [RAX]
MOV R9,qword ptr [RSP + 0x8]
MOV R8,R14
MOV RCX,qword ptr [RSP + 0x18]
MOV RDX,R13
MOV RDI,RBX
CALL 0x00126910
MOV dword ptr [RSP + 0x4],EAX
MOV RAX,qword ptr [RBP + 0x10]
MOV RSI,qword ptr [RAX + R12*0x8]
MOV R9,qword ptr [RSP + 0x10]
MOV R8,qword ptr [RSP + 0x28]
MOV RCX,qword ptr [RSP + 0x20]
MOV RDX,R13
MOV RDI,RBX
CALL 0x00126910
CMP dword ptr [RSP + 0x4],EAX
JZ 0x00126ae0
MOV EAX,0x1
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
ADD R12,0x1
CMP qword ptr [RBP + 0x8],R12
JG 0x00126a64
MOV EAX,0x0
JMP 0x00126ad1
MOV EAX,0x0
JMP 0x00126ad1
(translation_unit "undefined8\nFUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}\n\n" (function_definition "undefined8\nFUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar1 = *(long **)(param_1 + 0x98);" (assignment_expression "plVar1 = *(long **)(param_1 + 0x98)" identifier = (pointer_expression "*(long **)(param_1 + 0x98)" * (cast_expression "(long **)(param_1 + 0x98)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_0012696b(param_1,param_4);" (assignment_expression "uVar6 = FUN_0012696b(param_1,param_4)" identifier = (call_expression "FUN_0012696b(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_0012696b(param_1,param_6);" (assignment_expression "uVar7 = FUN_0012696b(param_1,param_6)" identifier = (call_expression "FUN_0012696b(param_1,param_6)" identifier (argument_list "(param_1,param_6)" ( identifier , identifier )))) ;) (if_statement "if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }" if (parenthesized_expression "(0 < *(long *)(param_2 + 8))" ( (binary_expression "0 < *(long *)(param_2 + 8)" number_literal < (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }" { (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));" do (compound_statement "{\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    }" { (expression_statement "lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);" (assignment_expression "lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" * (cast_expression "(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (binary_expression "*(long *)(param_2 + 0x10) + lVar8 * 8" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);" (assignment_expression "uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" * (cast_expression "(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" ( (binary_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1" (binary_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10" (pointer_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" * (cast_expression "(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" ( (binary_expression "lVar2 * 0x28 + *(long *)(param_1 + 0xd8)" (binary_expression "lVar2 * 0x28" identifier * number_literal) + (pointer_expression "*(long *)(param_1 + 0xd8)" * (cast_expression "(long *)(param_1 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) )))) * number_literal) + (pointer_expression "*plVar1" * identifier)) ))))) ;) (expression_statement "iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);" (assignment_expression "iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6)" identifier = (call_expression "FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6)" identifier (argument_list "(param_1,lVar2,uVar3,param_3,param_4,uVar6)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);" (assignment_expression "iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" identifier = (call_expression "FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" identifier (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" ( identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (binary_expression "*(long *)(param_2 + 0x10) + lVar8 * 8" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 != iVar5) {\n        return 1;\n      }" if (parenthesized_expression "(iVar4 != iVar5)" ( (binary_expression "iVar4 != iVar5" identifier != identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 < *(long *)(param_2 + 8))" ( (binary_expression "lVar8 < *(long *)(param_2 + 8)" identifier < (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "_Bool check_dst_limits(re_match_context_t *mctx,re_node_set *limits,Idx dst_node,Idx dst_idx,\n                      Idx src_node,Idx src_idx)\n\n{\n  re_dfa_t *prVar1;\n  Idx subexp_idx;\n  wchar_t wVar2;\n  wchar_t wVar3;\n  Idx bkref_idx;\n  Idx bkref_idx_00;\n  long lVar4;\n  \n  prVar1 = mctx->dfa;\n  bkref_idx = search_cur_bkref_entry(mctx,dst_idx);\n  bkref_idx_00 = search_cur_bkref_entry(mctx,src_idx);\n  if (0 < limits->nelem) {\n    lVar4 = 0;\n    do {\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    } while (lVar4 < limits->nelem);\n  }\n  return false;\n}\n\n" (function_definition "_Bool check_dst_limits(re_match_context_t *mctx,re_node_set *limits,Idx dst_node,Idx dst_idx,\n                      Idx src_node,Idx src_idx)\n\n{\n  re_dfa_t *prVar1;\n  Idx subexp_idx;\n  wchar_t wVar2;\n  wchar_t wVar3;\n  Idx bkref_idx;\n  Idx bkref_idx_00;\n  long lVar4;\n  \n  prVar1 = mctx->dfa;\n  bkref_idx = search_cur_bkref_entry(mctx,dst_idx);\n  bkref_idx_00 = search_cur_bkref_entry(mctx,src_idx);\n  if (0 < limits->nelem) {\n    lVar4 = 0;\n    do {\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    } while (lVar4 < limits->nelem);\n  }\n  return false;\n}" type_identifier (function_declarator "check_dst_limits(re_match_context_t *mctx,re_node_set *limits,Idx dst_node,Idx dst_idx,\n                      Idx src_node,Idx src_idx)" identifier (parameter_list "(re_match_context_t *mctx,re_node_set *limits,Idx dst_node,Idx dst_idx,\n                      Idx src_node,Idx src_idx)" ( (parameter_declaration "re_match_context_t *mctx" type_identifier (pointer_declarator "*mctx" * identifier)) , (parameter_declaration "re_node_set *limits" type_identifier (pointer_declarator "*limits" * identifier)) , (parameter_declaration "Idx dst_node" type_identifier identifier) , (parameter_declaration "Idx dst_idx" type_identifier identifier) , (parameter_declaration "Idx src_node" type_identifier identifier) , (parameter_declaration "Idx src_idx" type_identifier identifier) ))) (compound_statement "{\n  re_dfa_t *prVar1;\n  Idx subexp_idx;\n  wchar_t wVar2;\n  wchar_t wVar3;\n  Idx bkref_idx;\n  Idx bkref_idx_00;\n  long lVar4;\n  \n  prVar1 = mctx->dfa;\n  bkref_idx = search_cur_bkref_entry(mctx,dst_idx);\n  bkref_idx_00 = search_cur_bkref_entry(mctx,src_idx);\n  if (0 < limits->nelem) {\n    lVar4 = 0;\n    do {\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    } while (lVar4 < limits->nelem);\n  }\n  return false;\n}" { (declaration "re_dfa_t *prVar1;" type_identifier (pointer_declarator "*prVar1" * identifier) ;) (declaration "Idx subexp_idx;" type_identifier identifier ;) (declaration "wchar_t wVar2;" type_identifier identifier ;) (declaration "wchar_t wVar3;" type_identifier identifier ;) (declaration "Idx bkref_idx;" type_identifier identifier ;) (declaration "Idx bkref_idx_00;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (expression_statement "prVar1 = mctx->dfa;" (assignment_expression "prVar1 = mctx->dfa" identifier = (field_expression "mctx->dfa" identifier -> field_identifier)) ;) (expression_statement "bkref_idx = search_cur_bkref_entry(mctx,dst_idx);" (assignment_expression "bkref_idx = search_cur_bkref_entry(mctx,dst_idx)" identifier = (call_expression "search_cur_bkref_entry(mctx,dst_idx)" identifier (argument_list "(mctx,dst_idx)" ( identifier , identifier )))) ;) (expression_statement "bkref_idx_00 = search_cur_bkref_entry(mctx,src_idx);" (assignment_expression "bkref_idx_00 = search_cur_bkref_entry(mctx,src_idx)" identifier = (call_expression "search_cur_bkref_entry(mctx,src_idx)" identifier (argument_list "(mctx,src_idx)" ( identifier , identifier )))) ;) (if_statement "if (0 < limits->nelem) {\n    lVar4 = 0;\n    do {\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    } while (lVar4 < limits->nelem);\n  }" if (parenthesized_expression "(0 < limits->nelem)" ( (binary_expression "0 < limits->nelem" number_literal < (field_expression "limits->nelem" identifier -> field_identifier)) )) (compound_statement "{\n    lVar4 = 0;\n    do {\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    } while (lVar4 < limits->nelem);\n  }" { (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    } while (lVar4 < limits->nelem);" do (compound_statement "{\n      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;\n      wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);\n      wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);\n      if (wVar2 != wVar3) {\n        return true;\n      }\n      lVar4 = lVar4 + 1;\n    }" { (expression_statement "subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx;" (assignment_expression "subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx" identifier = (field_expression "prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr.idx" (field_expression "prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node].opr" (subscript_expression "prVar1->nodes[mctx->bkref_ents[limits->elems[lVar4]].node]" (field_expression "prVar1->nodes" identifier -> field_identifier) [ (field_expression "mctx->bkref_ents[limits->elems[lVar4]].node" (subscript_expression "mctx->bkref_ents[limits->elems[lVar4]]" (field_expression "mctx->bkref_ents" identifier -> field_identifier) [ (subscript_expression "limits->elems[lVar4]" (field_expression "limits->elems" identifier -> field_identifier) [ identifier ]) ]) . field_identifier) ]) . field_identifier) . field_identifier)) ;) (expression_statement "wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx);" (assignment_expression "wVar2 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx)" identifier = (call_expression "check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx)" identifier (argument_list "(mctx,limits->elems[lVar4],subexp_idx,dst_node,dst_idx,bkref_idx)" ( identifier , (subscript_expression "limits->elems[lVar4]" (field_expression "limits->elems" identifier -> field_identifier) [ identifier ]) , identifier , identifier , identifier , identifier )))) ;) (expression_statement "wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00);" (assignment_expression "wVar3 = check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00)" identifier = (call_expression "check_dst_limits_calc_pos\n                        (mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00)" identifier (argument_list "(mctx,limits->elems[lVar4],subexp_idx,src_node,src_idx,bkref_idx_00)" ( identifier , (subscript_expression "limits->elems[lVar4]" (field_expression "limits->elems" identifier -> field_identifier) [ identifier ]) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (wVar2 != wVar3) {\n        return true;\n      }" if (parenthesized_expression "(wVar2 != wVar3)" ( (binary_expression "wVar2 != wVar3" identifier != identifier) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar4 < limits->nelem)" ( (binary_expression "lVar4 < limits->nelem" identifier < (field_expression "limits->nelem" identifier -> field_identifier)) )) ;) })) (return_statement "return false;" return false ;) })))
(translation_unit "undefined8\nFUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}\n\n" (function_definition "undefined8\nFUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar1 = *(long **)(param_1 + 0x98);" (assignment_expression "plVar1 = *(long **)(param_1 + 0x98)" identifier = (pointer_expression "*(long **)(param_1 + 0x98)" * (cast_expression "(long **)(param_1 + 0x98)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = FUN_0012696b(param_1,param_4);" (assignment_expression "uVar6 = FUN_0012696b(param_1,param_4)" identifier = (call_expression "FUN_0012696b(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_0012696b(param_1,param_6);" (assignment_expression "uVar7 = FUN_0012696b(param_1,param_6)" identifier = (call_expression "FUN_0012696b(param_1,param_6)" identifier (argument_list "(param_1,param_6)" ( identifier , identifier )))) ;) (if_statement "if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }" if (parenthesized_expression "(0 < *(long *)(param_2 + 8))" ( (binary_expression "0 < *(long *)(param_2 + 8)" number_literal < (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }" { (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));" do (compound_statement "{\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    }" { (expression_statement "lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);" (assignment_expression "lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" * (cast_expression "(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (binary_expression "*(long *)(param_2 + 0x10) + lVar8 * 8" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);" (assignment_expression "uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" * (cast_expression "(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" ( (binary_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1" (binary_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10" (pointer_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" * (cast_expression "(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" ( (binary_expression "lVar2 * 0x28 + *(long *)(param_1 + 0xd8)" (binary_expression "lVar2 * 0x28" identifier * number_literal) + (pointer_expression "*(long *)(param_1 + 0xd8)" * (cast_expression "(long *)(param_1 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) )))) * number_literal) + (pointer_expression "*plVar1" * identifier)) ))))) ;) (expression_statement "iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);" (assignment_expression "iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6)" identifier = (call_expression "FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6)" identifier (argument_list "(param_1,lVar2,uVar3,param_3,param_4,uVar6)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);" (assignment_expression "iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" identifier = (call_expression "FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" identifier (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" ( identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x10) + lVar8 * 8)" ( (binary_expression "*(long *)(param_2 + 0x10) + lVar8 * 8" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 != iVar5) {\n        return 1;\n      }" if (parenthesized_expression "(iVar4 != iVar5)" ( (binary_expression "iVar4 != iVar5" identifier != identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 < *(long *)(param_2 + 8))" ( (binary_expression "lVar8 < *(long *)(param_2 + 8)" identifier < (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) * LIT) + (pointer_expression * IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined8\nFUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_00126a06(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)" (identifier "FUN_00126a06") (parameter_list "(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,\n            undefined8 param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  int iVar4;\n  int iVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  \n  plVar1 = *(long **)(param_1 + 0x98);\n  uVar6 = FUN_0012696b(param_1,param_4);\n  uVar7 = FUN_0012696b(param_1,param_6);\n  if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }\n  return 0;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (expression_statement "plVar1 = *(long **)(param_1 + 0x98);" (assignment_expression "plVar1 = *(long **)(param_1 + 0x98)" (identifier "plVar1") (= "=") (pointer_expression "*(long **)(param_1 + 0x98)" (* "*") (cast_expression "(long **)(param_1 + 0x98)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "uVar6 = FUN_0012696b(param_1,param_4);" (assignment_expression "uVar6 = FUN_0012696b(param_1,param_4)" (identifier "uVar6") (= "=") (call_expression "FUN_0012696b(param_1,param_4)" (identifier "FUN_0012696b") (argument_list "(param_1,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_0012696b(param_1,param_6);" (assignment_expression "uVar7 = FUN_0012696b(param_1,param_6)" (identifier "uVar7") (= "=") (call_expression "FUN_0012696b(param_1,param_6)" (identifier "FUN_0012696b") (argument_list "(param_1,param_6)" (( "(") (identifier "param_1") (, ",") (identifier "param_6") () ")")))) (; ";")) (if_statement "if (0 < *(long *)(param_2 + 8)) {\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }" (if "if") (parenthesized_expression "(0 < *(long *)(param_2 + 8))" (( "(") (binary_expression "0 < *(long *)(param_2 + 8)" (number_literal "0") (< "<") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n    lVar8 = 0;\n    do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));\n  }" ({ "{") (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar8 < *(long *)(param_2 + 8));" (do "do") (compound_statement "{\n      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);\n      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);\n      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);\n      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);\n      if (iVar4 != iVar5) {\n        return 1;\n      }\n      lVar8 = lVar8 + 1;\n    }" ({ "{") (expression_statement "lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);" (assignment_expression "lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" (* "*") (cast_expression "(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x10) + lVar8 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x10) + lVar8 * 8" (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);" (assignment_expression "uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" (* "*") (cast_expression "(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1)" (( "(") (binary_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1" (binary_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10" (pointer_expression "*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" (* "*") (cast_expression "(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 * 0x28 + *(long *)(param_1 + 0xd8))" (( "(") (binary_expression "lVar2 * 0x28 + *(long *)(param_1 + 0xd8)" (binary_expression "lVar2 * 0x28" (identifier "lVar2") (* "*") (number_literal "0x28")) (+ "+") (pointer_expression "*(long *)(param_1 + 0xd8)" (* "*") (cast_expression "(long *)(param_1 + 0xd8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")"))))) () ")")))) (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) () ")"))))) (; ";")) (expression_statement "iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);" (assignment_expression "iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6)" (identifier "iVar4") (= "=") (call_expression "FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6)" (identifier "FUN_00126910") (argument_list "(param_1,lVar2,uVar3,param_3,param_4,uVar6)" (( "(") (identifier "param_1") (, ",") (identifier "lVar2") (, ",") (identifier "uVar3") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7);" (assignment_expression "iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" (identifier "iVar5") (= "=") (call_expression "FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" (identifier "FUN_00126910") (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,\n                           param_5,param_6,uVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x10) + lVar8 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x10) + lVar8 * 8" (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")")))) (, ",") (identifier "uVar3") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "uVar7") () ")")))) (; ";")) (if_statement "if (iVar4 != iVar5) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(iVar4 != iVar5)" (( "(") (binary_expression "iVar4 != iVar5" (identifier "iVar4") (!= "!=") (identifier "iVar5")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar8 < *(long *)(param_2 + 8))" (( "(") (binary_expression "lVar8 < *(long *)(param_2 + 8)" (identifier "lVar8") (< "<") (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1 function_1(type_2 *mctx,type_3 *limits,type_4 dst_node,type_4 dst_idx,
                      type_4 src_node,type_4 src_idx)

{
  type_5 *prVar1;
  type_4 subexp_idx;
  type_6 var_3;
  type_6 var_4;
  type_4 bkref_idx;
  type_4 bkref_idx_00;
  long var_5;
  
  prVar1 = mctx->dfa;
  bkref_idx = var_1(mctx,dst_idx);
  bkref_idx_00 = var_1(mctx,src_idx);
  if (0 < limits->nelem) {
    var_5 = 0;
    do {
      subexp_idx = prVar1->nodes[mctx->bkref_ents[limits->elems[var_5]].node].opr.idx;
      var_3 = var_2
                        (mctx,limits->elems[var_5],subexp_idx,dst_node,dst_idx,bkref_idx);
      var_4 = var_2
                        (mctx,limits->elems[var_5],subexp_idx,src_node,src_idx,bkref_idx_00);
      if (var_3 != var_4) {
        return true;
      }
      var_5 = var_5 + 1;
    } while (var_5 < limits->nelem);
  }
  return false;
}


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

undefined8
MASKED(long param_1,long param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5,
            undefined8 param_6)

{
  long *plVar1;
  long lVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  
  plVar1 = *(long **)(param_1 + 0x98);
  uVar6 = FUN_0012696b(param_1,param_4);
  uVar7 = FUN_0012696b(param_1,param_6);
  if (0 < *(long *)(param_2 + 8)) {
    lVar8 = 0;
    do {
      lVar2 = *(long *)(*(long *)(param_2 + 0x10) + lVar8 * 8);
      uVar3 = *(undefined8 *)(*(long *)(lVar2 * 0x28 + *(long *)(param_1 + 0xd8)) * 0x10 + *plVar1);
      iVar4 = FUN_00126910(param_1,lVar2,uVar3,param_3,param_4,uVar6);
      iVar5 = FUN_00126910(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + lVar8 * 8),uVar3,
                           param_5,param_6,uVar7);
      if (iVar4 != iVar5) {
        return 1;
      }
      lVar8 = lVar8 + 1;
    } while (lVar8 < *(long *)(param_2 + 8));
  }
  return 0;
}

