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

_Bool current_is_offscreen(void)

{
  int iVar1;
  int iVar2;
  _Bool _Var3;
  size_t sVar4;
  bool bVar5;
  
  iVar1 = openfile->current->lineno;
  iVar2 = openfile->edittop->lineno;
  if (((byte)flags[1] & 2) == 0) {
    bVar5 = iVar1 < iVar2;
  }
  else {
    if (iVar1 < iVar2) {
      return true;
    }
    if (iVar1 != iVar2) goto LAB_00044352;
    sVar4 = xplustabs();
    bVar5 = sVar4 < openfile->firstcolumn;
  }
  if (bVar5 != false) {
    return bVar5;
  }
LAB_00044352:
  _Var3 = current_is_below_screen();
  return _Var3;
}



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

bool FUN_00044310(void)

{
  int iVar1;
  int iVar2;
  undefined1 uVar3;
  uint uVar4;
  bool bVar5;
  
  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);
  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);
  if ((DAT_0007b668 & 2) == 0) {
    bVar5 = iVar1 < iVar2;
  }
  else {
    if (iVar1 < iVar2) {
      return true;
    }
    if (iVar1 != iVar2) goto LAB_00044352;
    uVar4 = FUN_0003df20();
    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);
  }
  if (bVar5 != false) {
    return bVar5;
  }
LAB_00044352:
  uVar3 = FUN_000441c0();
  return (bool)uVar3;
}


PUSH ESI
PUSH EBX
CALL 0x00015680
ADD EBX,0x368b9
SUB ESP,0x4
LEA ESI,[EBX + 0xa70]
LEA ECX,[EBX + 0xa94]
MOV EAX,dword ptr [ESI]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EDX + 0x4]
MOV EAX,dword ptr [EAX + 0x4]
TEST byte ptr [ECX + 0x4],0x2
JZ 0x00044360
CMP EDX,EAX
JGE 0x00044350
ADD ESP,0x4
MOV EAX,0x1
POP EBX
POP ESI
RET
JZ 0x00044370
ADD ESP,0x4
POP EBX
POP ESI
JMP 0x000441c0
CMP EDX,EAX
SETL AL
TEST AL,AL
JZ 0x00044352
ADD ESP,0x4
POP EBX
POP ESI
RET
CALL 0x0003df20
MOV EDX,dword ptr [ESI]
CMP EAX,dword ptr [EDX + 0x18]
SETC AL
JMP 0x00044365
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_00044310(void)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}\n\n" comment (function_definition "bool FUN_00044310(void)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}" primitive_type (function_declarator "FUN_00044310(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);" (assignment_expression "iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" * (cast_expression "(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0007b640 + 0x10) + 4)" ( (binary_expression "*(int *)(DAT_0007b640 + 0x10) + 4" (pointer_expression "*(int *)(DAT_0007b640 + 0x10)" * (cast_expression "(int *)(DAT_0007b640 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0007b640 + 0x10)" ( (binary_expression "DAT_0007b640 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);" (assignment_expression "iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0007b640 + 0xc) + 4)" ( (binary_expression "*(int *)(DAT_0007b640 + 0xc) + 4" (pointer_expression "*(int *)(DAT_0007b640 + 0xc)" * (cast_expression "(int *)(DAT_0007b640 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0007b640 + 0xc)" ( (binary_expression "DAT_0007b640 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" if (parenthesized_expression "((DAT_0007b668 & 2) == 0)" ( (binary_expression "(DAT_0007b668 & 2) == 0" (parenthesized_expression "(DAT_0007b668 & 2)" ( (binary_expression "DAT_0007b668 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar5 = iVar1 < iVar2;\n  }" { (expression_statement "bVar5 = iVar1 < iVar2;" (assignment_expression "bVar5 = iVar1 < iVar2" identifier = (binary_expression "iVar1 < iVar2" identifier < identifier)) ;) }) (else_clause "else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" else (compound_statement "{\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" { (if_statement "if (iVar1 < iVar2) {\n      return true;\n    }" if (parenthesized_expression "(iVar1 < iVar2)" ( (binary_expression "iVar1 < iVar2" identifier < identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if (iVar1 != iVar2) goto LAB_00044352;" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (goto_statement "goto LAB_00044352;" goto statement_identifier ;)) (expression_statement "uVar4 = FUN_0003df20();" (assignment_expression "uVar4 = FUN_0003df20()" identifier = (call_expression "FUN_0003df20()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);" (assignment_expression "bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18)" identifier = (binary_expression "uVar4 < *(uint *)(DAT_0007b640 + 0x18)" identifier < (pointer_expression "*(uint *)(DAT_0007b640 + 0x18)" * (cast_expression "(uint *)(DAT_0007b640 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0007b640 + 0x18)" ( (binary_expression "DAT_0007b640 + 0x18" identifier + number_literal) )))))) ;) }))) (if_statement "if (bVar5 != false) {\n    return bVar5;\n  }" if (parenthesized_expression "(bVar5 != false)" ( (binary_expression "bVar5 != false" identifier != false) )) (compound_statement "{\n    return bVar5;\n  }" { (return_statement "return bVar5;" return identifier ;) })) (labeled_statement "LAB_00044352:\n  uVar3 = FUN_000441c0();" statement_identifier : (expression_statement "uVar3 = FUN_000441c0();" (assignment_expression "uVar3 = FUN_000441c0()" identifier = (call_expression "FUN_000441c0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return (bool)uVar3;" return (cast_expression "(bool)uVar3" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\n_Bool current_is_offscreen(void)\n\n{\n  int iVar1;\n  int iVar2;\n  _Bool _Var3;\n  size_t sVar4;\n  bool bVar5;\n  \n  iVar1 = openfile->current->lineno;\n  iVar2 = openfile->edittop->lineno;\n  if (((byte)flags[1] & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    sVar4 = xplustabs();\n    bVar5 = sVar4 < openfile->firstcolumn;\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  _Var3 = current_is_below_screen();\n  return _Var3;\n}\n\n" comment comment (function_definition "_Bool current_is_offscreen(void)\n\n{\n  int iVar1;\n  int iVar2;\n  _Bool _Var3;\n  size_t sVar4;\n  bool bVar5;\n  \n  iVar1 = openfile->current->lineno;\n  iVar2 = openfile->edittop->lineno;\n  if (((byte)flags[1] & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    sVar4 = xplustabs();\n    bVar5 = sVar4 < openfile->firstcolumn;\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  _Var3 = current_is_below_screen();\n  return _Var3;\n}" type_identifier (function_declarator "current_is_offscreen(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  _Bool _Var3;\n  size_t sVar4;\n  bool bVar5;\n  \n  iVar1 = openfile->current->lineno;\n  iVar2 = openfile->edittop->lineno;\n  if (((byte)flags[1] & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    sVar4 = xplustabs();\n    bVar5 = sVar4 < openfile->firstcolumn;\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  _Var3 = current_is_below_screen();\n  return _Var3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "_Bool _Var3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (expression_statement "iVar1 = openfile->current->lineno;" (assignment_expression "iVar1 = openfile->current->lineno" identifier = (field_expression "openfile->current->lineno" (field_expression "openfile->current" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "iVar2 = openfile->edittop->lineno;" (assignment_expression "iVar2 = openfile->edittop->lineno" identifier = (field_expression "openfile->edittop->lineno" (field_expression "openfile->edittop" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (((byte)flags[1] & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    sVar4 = xplustabs();\n    bVar5 = sVar4 < openfile->firstcolumn;\n  }" if (parenthesized_expression "(((byte)flags[1] & 2) == 0)" ( (binary_expression "((byte)flags[1] & 2) == 0" (parenthesized_expression "((byte)flags[1] & 2)" ( (binary_expression "(byte)flags[1] & 2" (cast_expression "(byte)flags[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "flags[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar5 = iVar1 < iVar2;\n  }" { (expression_statement "bVar5 = iVar1 < iVar2;" (assignment_expression "bVar5 = iVar1 < iVar2" identifier = (binary_expression "iVar1 < iVar2" identifier < identifier)) ;) }) (else_clause "else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    sVar4 = xplustabs();\n    bVar5 = sVar4 < openfile->firstcolumn;\n  }" else (compound_statement "{\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    sVar4 = xplustabs();\n    bVar5 = sVar4 < openfile->firstcolumn;\n  }" { (if_statement "if (iVar1 < iVar2) {\n      return true;\n    }" if (parenthesized_expression "(iVar1 < iVar2)" ( (binary_expression "iVar1 < iVar2" identifier < identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if (iVar1 != iVar2) goto LAB_00044352;" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (goto_statement "goto LAB_00044352;" goto statement_identifier ;)) (expression_statement "sVar4 = xplustabs();" (assignment_expression "sVar4 = xplustabs()" identifier = (call_expression "xplustabs()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar5 = sVar4 < openfile->firstcolumn;" (assignment_expression "bVar5 = sVar4 < openfile->firstcolumn" identifier = (binary_expression "sVar4 < openfile->firstcolumn" identifier < (field_expression "openfile->firstcolumn" identifier -> field_identifier))) ;) }))) (if_statement "if (bVar5 != false) {\n    return bVar5;\n  }" if (parenthesized_expression "(bVar5 != false)" ( (binary_expression "bVar5 != false" identifier != false) )) (compound_statement "{\n    return bVar5;\n  }" { (return_statement "return bVar5;" return identifier ;) })) (labeled_statement "LAB_00044352:\n  _Var3 = current_is_below_screen();" statement_identifier : (expression_statement "_Var3 = current_is_below_screen();" (assignment_expression "_Var3 = current_is_below_screen()" identifier = (call_expression "current_is_below_screen()" identifier (argument_list "()" ( )))) ;)) (return_statement "return _Var3;" return identifier ;) })))
(translation_unit "bool FUN_00044310(void)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}\n\n" (function_definition "bool FUN_00044310(void)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}" primitive_type (function_declarator "FUN_00044310(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);" (assignment_expression "iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" * (cast_expression "(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0007b640 + 0x10) + 4)" ( (binary_expression "*(int *)(DAT_0007b640 + 0x10) + 4" (pointer_expression "*(int *)(DAT_0007b640 + 0x10)" * (cast_expression "(int *)(DAT_0007b640 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0007b640 + 0x10)" ( (binary_expression "DAT_0007b640 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);" (assignment_expression "iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0007b640 + 0xc) + 4)" ( (binary_expression "*(int *)(DAT_0007b640 + 0xc) + 4" (pointer_expression "*(int *)(DAT_0007b640 + 0xc)" * (cast_expression "(int *)(DAT_0007b640 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0007b640 + 0xc)" ( (binary_expression "DAT_0007b640 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" if (parenthesized_expression "((DAT_0007b668 & 2) == 0)" ( (binary_expression "(DAT_0007b668 & 2) == 0" (parenthesized_expression "(DAT_0007b668 & 2)" ( (binary_expression "DAT_0007b668 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar5 = iVar1 < iVar2;\n  }" { (expression_statement "bVar5 = iVar1 < iVar2;" (assignment_expression "bVar5 = iVar1 < iVar2" identifier = (binary_expression "iVar1 < iVar2" identifier < identifier)) ;) }) (else_clause "else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" else (compound_statement "{\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" { (if_statement "if (iVar1 < iVar2) {\n      return true;\n    }" if (parenthesized_expression "(iVar1 < iVar2)" ( (binary_expression "iVar1 < iVar2" identifier < identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if (iVar1 != iVar2) goto LAB_00044352;" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (goto_statement "goto LAB_00044352;" goto statement_identifier ;)) (expression_statement "uVar4 = FUN_0003df20();" (assignment_expression "uVar4 = FUN_0003df20()" identifier = (call_expression "FUN_0003df20()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);" (assignment_expression "bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18)" identifier = (binary_expression "uVar4 < *(uint *)(DAT_0007b640 + 0x18)" identifier < (pointer_expression "*(uint *)(DAT_0007b640 + 0x18)" * (cast_expression "(uint *)(DAT_0007b640 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0007b640 + 0x18)" ( (binary_expression "DAT_0007b640 + 0x18" identifier + number_literal) )))))) ;) }))) (if_statement "if (bVar5 != false) {\n    return bVar5;\n  }" if (parenthesized_expression "(bVar5 != false)" ( (binary_expression "bVar5 != false" identifier != false) )) (compound_statement "{\n    return bVar5;\n  }" { (return_statement "return bVar5;" return identifier ;) })) (labeled_statement "LAB_00044352:\n  uVar3 = FUN_000441c0();" statement_identifier : (expression_statement "uVar3 = FUN_000441c0();" (assignment_expression "uVar3 = FUN_000441c0()" identifier = (call_expression "FUN_000441c0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return (bool)uVar3;" return (cast_expression "(bool)uVar3" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != BOOL) )) (compound_statement { (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })))
(function_definition "bool FUN_00044310(void)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}" (primitive_type "bool") (function_declarator "FUN_00044310(void)" (identifier "FUN_00044310") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined1 uVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);\n  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);\n  if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }\n  if (bVar5 != false) {\n    return bVar5;\n  }\nLAB_00044352:\n  uVar3 = FUN_000441c0();\n  return (bool)uVar3;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined1 uVar3;" (type_identifier "undefined1") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (expression_statement "iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);" (assignment_expression "iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" (* "*") (cast_expression "(int *)(*(int *)(DAT_0007b640 + 0x10) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0007b640 + 0x10) + 4)" (( "(") (binary_expression "*(int *)(DAT_0007b640 + 0x10) + 4" (pointer_expression "*(int *)(DAT_0007b640 + 0x10)" (* "*") (cast_expression "(int *)(DAT_0007b640 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0007b640 + 0x10)" (( "(") (binary_expression "DAT_0007b640 + 0x10" (identifier "DAT_0007b640") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);" (assignment_expression "iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(DAT_0007b640 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0007b640 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(DAT_0007b640 + 0xc) + 4" (pointer_expression "*(int *)(DAT_0007b640 + 0xc)" (* "*") (cast_expression "(int *)(DAT_0007b640 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0007b640 + 0xc)" (( "(") (binary_expression "DAT_0007b640 + 0xc" (identifier "DAT_0007b640") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((DAT_0007b668 & 2) == 0) {\n    bVar5 = iVar1 < iVar2;\n  }\n  else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" (if "if") (parenthesized_expression "((DAT_0007b668 & 2) == 0)" (( "(") (binary_expression "(DAT_0007b668 & 2) == 0" (parenthesized_expression "(DAT_0007b668 & 2)" (( "(") (binary_expression "DAT_0007b668 & 2" (identifier "DAT_0007b668") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar5 = iVar1 < iVar2;\n  }" ({ "{") (expression_statement "bVar5 = iVar1 < iVar2;" (assignment_expression "bVar5 = iVar1 < iVar2" (identifier "bVar5") (= "=") (binary_expression "iVar1 < iVar2" (identifier "iVar1") (< "<") (identifier "iVar2"))) (; ";")) (} "}")) (else_clause "else {\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" (else "else") (compound_statement "{\n    if (iVar1 < iVar2) {\n      return true;\n    }\n    if (iVar1 != iVar2) goto LAB_00044352;\n    uVar4 = FUN_0003df20();\n    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);\n  }" ({ "{") (if_statement "if (iVar1 < iVar2) {\n      return true;\n    }" (if "if") (parenthesized_expression "(iVar1 < iVar2)" (( "(") (binary_expression "iVar1 < iVar2" (identifier "iVar1") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n      return true;\n    }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if (iVar1 != iVar2) goto LAB_00044352;" (if "if") (parenthesized_expression "(iVar1 != iVar2)" (( "(") (binary_expression "iVar1 != iVar2" (identifier "iVar1") (!= "!=") (identifier "iVar2")) () ")")) (goto_statement "goto LAB_00044352;" (goto "goto") (statement_identifier "LAB_00044352") (; ";"))) (expression_statement "uVar4 = FUN_0003df20();" (assignment_expression "uVar4 = FUN_0003df20()" (identifier "uVar4") (= "=") (call_expression "FUN_0003df20()" (identifier "FUN_0003df20") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);" (assignment_expression "bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18)" (identifier "bVar5") (= "=") (binary_expression "uVar4 < *(uint *)(DAT_0007b640 + 0x18)" (identifier "uVar4") (< "<") (pointer_expression "*(uint *)(DAT_0007b640 + 0x18)" (* "*") (cast_expression "(uint *)(DAT_0007b640 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0007b640 + 0x18)" (( "(") (binary_expression "DAT_0007b640 + 0x18" (identifier "DAT_0007b640") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (} "}")))) (if_statement "if (bVar5 != false) {\n    return bVar5;\n  }" (if "if") (parenthesized_expression "(bVar5 != false)" (( "(") (binary_expression "bVar5 != false" (identifier "bVar5") (!= "!=") (false "false")) () ")")) (compound_statement "{\n    return bVar5;\n  }" ({ "{") (return_statement "return bVar5;" (return "return") (identifier "bVar5") (; ";")) (} "}"))) (labeled_statement "LAB_00044352:\n  uVar3 = FUN_000441c0();" (statement_identifier "LAB_00044352") (: ":") (expression_statement "uVar3 = FUN_000441c0();" (assignment_expression "uVar3 = FUN_000441c0()" (identifier "uVar3") (= "=") (call_expression "FUN_000441c0()" (identifier "FUN_000441c0") (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return (bool)uVar3;" (return "return") (cast_expression "(bool)uVar3" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar3")) (; ";")) (} "}")))

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

type_1 function_1(void)

{
  int var_1;
  int var_2;
  type_1 _Var3;
  size_t var_4;
  bool var_5;
  
  var_1 = openfile->current->lineno;
  var_2 = openfile->edittop->lineno;
  if (((type_2)flags[1] & 2) == 0) {
    var_5 = var_1 < var_2;
  }
  else {
    if (var_1 < var_2) {
      return true;
    }
    if (var_1 != var_2) goto LAB_00044352;
    var_4 = var_3();
    var_5 = var_4 < openfile->firstcolumn;
  }
  if (var_5 != false) {
    return var_5;
  }
LAB_00044352:
  _Var3 = var_6();
  return _Var3;
}


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

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

bool MASKED(void)

{
  int iVar1;
  int iVar2;
  undefined1 uVar3;
  uint uVar4;
  bool bVar5;
  
  iVar1 = *(int *)(*(int *)(DAT_0007b640 + 0x10) + 4);
  iVar2 = *(int *)(*(int *)(DAT_0007b640 + 0xc) + 4);
  if ((DAT_0007b668 & 2) == 0) {
    bVar5 = iVar1 < iVar2;
  }
  else {
    if (iVar1 < iVar2) {
      return true;
    }
    if (iVar1 != iVar2) goto LAB_00044352;
    uVar4 = FUN_0003df20();
    bVar5 = uVar4 < *(uint *)(DAT_0007b640 + 0x18);
  }
  if (bVar5 != false) {
    return bVar5;
  }
LAB_00044352:
  uVar3 = FUN_000441c0();
  return (bool)uVar3;
}

