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

int session_filter(void *pCtx,char *zTab)

{
  int iVar1;
  int iVar2;
  
  if (0 < *(int *)((int)pCtx + 4)) {
    iVar2 = 0;
    do {
      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 < *(int *)((int)pCtx + 4));
  }
  return 1;
}



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

undefined4 FUN_00020890(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  
  if (0 < *(int *)(param_1 + 4)) {
    iVar2 = 0;
    do {
      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 < *(int *)(param_1 + 4));
  }
  return 1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00017230
ADD EBX,0x15b58f
SUB ESP,0xc
MOV EBP,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EBP + 0x4]
TEST EAX,EAX
JLE 0x000208e0
XOR ESI,ESI
JMP 0x000208c0
ADD ESI,0x1
CMP dword ptr [EBP + 0x4],ESI
JLE 0x000208e0
SUB ESP,0x8
PUSH EDI
MOV EAX,dword ptr [EBP + 0x8]
PUSH dword ptr [EAX + ESI*0x4]
CALL 0x00041500
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000208b8
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0xc
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00020890(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_00020890(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00020890(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }" if (parenthesized_expression "(0 < *(int *)(param_1 + 4))" ( (binary_expression "0 < *(int *)(param_1 + 4)" number_literal < (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) ))))) )) (compound_statement "{\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));" do (compound_statement "{\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    }" { (expression_statement "iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);" (assignment_expression "iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" identifier = (call_expression "FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" identifier (argument_list "(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + iVar2 * 4)" ( (binary_expression "*(int *)(param_1 + 8) + iVar2 * 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 "iVar2 * 4" identifier * number_literal)) )))) , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 < *(int *)(param_1 + 4))" ( (binary_expression "iVar2 < *(int *)(param_1 + 4)" identifier < (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) ))))) )) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint session_filter(void *pCtx,char *zTab)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)((int)pCtx + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)((int)pCtx + 4));\n  }\n  return 1;\n}\n\n" comment comment (function_definition "int session_filter(void *pCtx,char *zTab)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)((int)pCtx + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)((int)pCtx + 4));\n  }\n  return 1;\n}" primitive_type (function_declarator "session_filter(void *pCtx,char *zTab)" identifier (parameter_list "(void *pCtx,char *zTab)" ( (parameter_declaration "void *pCtx" primitive_type (pointer_declarator "*pCtx" * identifier)) , (parameter_declaration "char *zTab" primitive_type (pointer_declarator "*zTab" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)((int)pCtx + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)((int)pCtx + 4));\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (0 < *(int *)((int)pCtx + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)((int)pCtx + 4));\n  }" if (parenthesized_expression "(0 < *(int *)((int)pCtx + 4))" ( (binary_expression "0 < *(int *)((int)pCtx + 4)" number_literal < (pointer_expression "*(int *)((int)pCtx + 4)" * (cast_expression "(int *)((int)pCtx + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCtx + 4)" ( (binary_expression "(int)pCtx + 4" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n    iVar2 = 0;\n    do {\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)((int)pCtx + 4));\n  }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)((int)pCtx + 4));" do (compound_statement "{\n      iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    }" { (expression_statement "iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab);" (assignment_expression "iVar1 = sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab)" identifier = (call_expression "sqlite3_strglob(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab)" identifier (argument_list "(*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4),zTab)" ( (pointer_expression "*(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4)" * (cast_expression "(char **)(*(int *)((int)pCtx + 8) + iVar2 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)pCtx + 8) + iVar2 * 4)" ( (binary_expression "*(int *)((int)pCtx + 8) + iVar2 * 4" (pointer_expression "*(int *)((int)pCtx + 8)" * (cast_expression "(int *)((int)pCtx + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCtx + 8)" ( (binary_expression "(int)pCtx + 8" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar2 * 4" identifier * number_literal)) )))) , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 < *(int *)((int)pCtx + 4))" ( (binary_expression "iVar2 < *(int *)((int)pCtx + 4)" identifier < (pointer_expression "*(int *)((int)pCtx + 4)" * (cast_expression "(int *)((int)pCtx + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCtx + 4)" ( (binary_expression "(int)pCtx + 4" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00020890(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00020890(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00020890(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }" if (parenthesized_expression "(0 < *(int *)(param_1 + 4))" ( (binary_expression "0 < *(int *)(param_1 + 4)" number_literal < (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) ))))) )) (compound_statement "{\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));" do (compound_statement "{\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    }" { (expression_statement "iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);" (assignment_expression "iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" identifier = (call_expression "FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" identifier (argument_list "(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + iVar2 * 4)" ( (binary_expression "*(int *)(param_1 + 8) + iVar2 * 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 "iVar2 * 4" identifier * number_literal)) )))) , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 < *(int *)(param_1 + 4))" ( (binary_expression "iVar2 < *(int *)(param_1 + 4)" identifier < (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) ))))) )) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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)) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00020890(int param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00020890(int param_1,undefined4 param_2)" (identifier "FUN_00020890") (parameter_list "(int param_1,undefined4 param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (if_statement "if (0 < *(int *)(param_1 + 4)) {\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 4))" (( "(") (binary_expression "0 < *(int *)(param_1 + 4)" (number_literal "0") (< "<") (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")) () ")"))))) () ")")) (compound_statement "{\n    iVar2 = 0;\n    do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));\n  }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    } while (iVar2 < *(int *)(param_1 + 4));" (do "do") (compound_statement "{\n      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar2 = iVar2 + 1;\n    }" ({ "{") (expression_statement "iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);" (assignment_expression "iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" (identifier "iVar1") (= "=") (call_expression "FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" (identifier "FUN_00041500") (argument_list "(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2)" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + iVar2 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 8) + iVar2 * 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 "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) () ")")))) (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 < *(int *)(param_1 + 4))" (( "(") (binary_expression "iVar2 < *(int *)(param_1 + 4)" (identifier "iVar2") (< "<") (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")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

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

int function_1(void *pCtx,char *zTab)

{
  int var_3;
  int var_2;
  
  if (0 < *(int *)((int)pCtx + 4)) {
    var_2 = 0;
    do {
      var_3 = var_1(*(char **)(*(int *)((int)pCtx + 8) + var_2 * 4),zTab);
      if (var_3 == 0) {
        return 0;
      }
      var_2 = var_2 + 1;
    } while (var_2 < *(int *)((int)pCtx + 4));
  }
  return 1;
}


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

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

undefined4 MASKED(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  
  if (0 < *(int *)(param_1 + 4)) {
    iVar2 = 0;
    do {
      iVar1 = FUN_00041500(*(undefined4 *)(*(int *)(param_1 + 8) + iVar2 * 4),param_2);
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 < *(int *)(param_1 + 4));
  }
  return 1;
}

