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

LINENUM currline(int where)

{
  longlong lVar1;
  POSITION PVar2;
  longlong lVar3;
  undefined4 in_stack_ffffffd4;
  uint uVar4;
  uint local_24;
  
  lVar1 = position(where);
  PVar2 = ch_length();
  uVar4 = (uint)PVar2;
  local_24 = (uint)((ulonglong)PVar2 >> 0x20);
  if ((lVar1 == -1) && (-1 < where)) {
    if (where < sc_height) {
      do {
        where = where + 1;
        lVar1 = position(where);
        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;
      } while (where < sc_height);
    }
LAB_00026157:
    if (linenums == 0) {
      return -1;
    }
    if ((local_24 & uVar4) == 0xffffffff) {
      return CONCAT44(local_24,uVar4);
    }
    lVar1 = CONCAT44(local_24,uVar4);
    if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {
      return 0;
    }
  }
  else {
LAB_0002618c:
    if (lVar1 == -1) goto LAB_00026157;
    lVar3 = 0;
    if ((linenums == 0) ||
       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))
    goto LAB_000261c8;
  }
  lVar3 = find_linenum(CONCAT44(uVar4,in_stack_ffffffd4));
LAB_000261c8:
  if (lVar1 == CONCAT44(local_24,uVar4)) {
    lVar3 = lVar3 + -1;
  }
  return lVar3;
}



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

longlong FUN_000260e0(int param_1)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar1 = FUN_0002b260(param_1);
  lVar2 = FUN_000162e0();
  if ((lVar1 == -1) && (-1 < param_1)) {
    if (param_1 < DAT_000488e4) {
      do {
        param_1 = param_1 + 1;
        lVar1 = FUN_0002b260(param_1);
        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;
      } while (param_1 < DAT_000488e4);
    }
LAB_00026157:
    if (DAT_00048960 == 0) {
      return -1;
    }
    if (lVar2 == -1) {
      return -1;
    }
    lVar1 = lVar2;
    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {
      return 0;
    }
  }
  else {
LAB_0002618c:
    if (lVar1 == -1) goto LAB_00026157;
    lVar3 = 0;
    if ((DAT_00048960 == 0) ||
       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))
    goto LAB_000261c8;
  }
  lVar3 = FUN_000259e0();
LAB_000261c8:
  if (lVar1 == lVar2) {
    lVar3 = lVar3 + -1;
  }
  return lVar3;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000129d0
ADD EBX,0x1cda3
SUB ESP,0x28
MOV ESI,dword ptr [ESP + 0x3c]
PUSH ESI
CALL 0x0002b260
MOV dword ptr [ESP + 0x1c],EAX
MOV EDI,EDX
CALL 0x000162e0
MOV ECX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,ECX
MOV dword ptr [ESP + 0x18],EDX
ADD ESP,0x10
AND EAX,EDI
CMP EAX,-0x1
JNZ 0x0002618c
TEST ESI,ESI
JS 0x0002618c
LEA EBP,[EBX + 0x5a58]
CMP ESI,dword ptr [EBP]
JGE 0x00026151
NOP
SUB ESP,0xc
ADD ESI,0x1
PUSH ESI
CALL 0x0002b260
ADD ESP,0x10
MOV ECX,EAX
AND ECX,EDX
CMP ECX,-0x1
JNZ 0x00026188
TEST ESI,ESI
JS 0x00026188
CMP dword ptr [EBP],ESI
JG 0x00026130
LEA ESI,[EBX + 0x5ad4]
MOV ECX,dword ptr [ESI]
MOV EAX,0xffffffff
MOV EDX,0xffffffff
TEST ECX,ECX
JZ 0x000261d4
MOV EAX,dword ptr [ESP + 0x8]
AND EAX,dword ptr [ESP + 0x4]
CMP EAX,-0x1
JNZ 0x000261dc
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x8]
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,EAX
MOV EDI,EDX
LEA ESI,[EBX + 0x5ad4]
MOV EAX,EDI
AND EAX,ECX
MOV EBP,dword ptr [ESI]
CMP EAX,-0x1
JZ 0x00026157
XOR EAX,EAX
XOR EDX,EDX
TEST EBP,EBP
JZ 0x000261c8
XOR EAX,EAX
MOV EDX,0x0
CMP EAX,ECX
SBB EAX,EDI
MOV EAX,0x1
JGE 0x000261c8
MOV EAX,ECX
MOV EDX,EDI
MOV dword ptr [ESP + 0xc],ECX
CALL 0x000259e0
MOV ECX,dword ptr [ESP + 0xc]
XOR ECX,dword ptr [ESP + 0x4]
XOR EDI,dword ptr [ESP + 0x8]
OR EDI,ECX
JZ 0x000261f8
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x4]
XOR EAX,EAX
MOV EDI,dword ptr [ESP + 0x8]
MOV EDX,0x0
CMP EAX,ECX
SBB EAX,EDI
MOV EAX,0x0
JL 0x000261b7
JMP 0x000261d4
ADD EAX,-0x1
ADC EDX,-0x1
JMP 0x000261d4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nlonglong FUN_000260e0(int param_1)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}\n\n" comment (function_definition "longlong FUN_000260e0(int param_1)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" type_identifier (function_declarator "FUN_000260e0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (expression_statement "lVar1 = FUN_0002b260(param_1);" (assignment_expression "lVar1 = FUN_0002b260(param_1)" identifier = (call_expression "FUN_0002b260(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "lVar2 = FUN_000162e0();" (assignment_expression "lVar2 = FUN_000162e0()" identifier = (call_expression "FUN_000162e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" if (parenthesized_expression "((lVar1 == -1) && (-1 < param_1))" ( (binary_expression "(lVar1 == -1) && (-1 < param_1)" (parenthesized_expression "(lVar1 == -1)" ( (binary_expression "lVar1 == -1" identifier == number_literal) )) && (parenthesized_expression "(-1 < param_1)" ( (binary_expression "-1 < param_1" number_literal < identifier) ))) )) (compound_statement "{\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }" { (if_statement "if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }" if (parenthesized_expression "(param_1 < DAT_000488e4)" ( (binary_expression "param_1 < DAT_000488e4" identifier < identifier) )) (compound_statement "{\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }" { (do_statement "do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);" do (compound_statement "{\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "lVar1 = FUN_0002b260(param_1);" (assignment_expression "lVar1 = FUN_0002b260(param_1)" identifier = (call_expression "FUN_0002b260(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;" if (parenthesized_expression "((lVar1 != -1) || (param_1 < 0))" ( (binary_expression "(lVar1 != -1) || (param_1 < 0)" (parenthesized_expression "(lVar1 != -1)" ( (binary_expression "lVar1 != -1" identifier != number_literal) )) || (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) ))) )) (goto_statement "goto LAB_0002618c;" goto statement_identifier ;)) }) while (parenthesized_expression "(param_1 < DAT_000488e4)" ( (binary_expression "param_1 < DAT_000488e4" identifier < identifier) )) ;) })) (labeled_statement "LAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }" statement_identifier : (if_statement "if (DAT_00048960 == 0) {\n      return -1;\n    }" if (parenthesized_expression "(DAT_00048960 == 0)" ( (binary_expression "DAT_00048960 == 0" identifier == number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) (if_statement "if (lVar2 == -1) {\n      return -1;\n    }" if (parenthesized_expression "(lVar2 == -1)" ( (binary_expression "lVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "lVar1 = lVar2;" (assignment_expression "lVar1 = lVar2" identifier = identifier) ;) (if_statement "if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }" if (parenthesized_expression "((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20))" ( (binary_expression "(int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)" (cast_expression "(int)(uint)((int)lVar2 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)lVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar2 != 0)" ( (binary_expression "(int)lVar2 != 0" (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) <= (unary_expression "-(int)((ulonglong)lVar2 >> 0x20)" - (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" else (compound_statement "{\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" { (labeled_statement "LAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;" statement_identifier : (if_statement "if (lVar1 == -1) goto LAB_00026157;" if (parenthesized_expression "(lVar1 == -1)" ( (binary_expression "lVar1 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00026157;" goto statement_identifier ;))) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (if_statement "if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;" if (parenthesized_expression "((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))" ( (binary_expression "(DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" (parenthesized_expression "(DAT_00048960 == 0)" ( (binary_expression "DAT_00048960 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" ( (comma_expression "lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (assignment_expression "lVar3 = 1" identifier = number_literal) , (binary_expression "(int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (cast_expression "(int)(uint)((int)lVar1 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)lVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar1 != 0)" ( (binary_expression "(int)lVar1 != 0" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) <= (unary_expression "-(int)((ulonglong)lVar1 >> 0x20)" - (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))))) ))) )) (goto_statement "goto LAB_000261c8;" goto statement_identifier ;)) }))) (expression_statement "lVar3 = FUN_000259e0();" (assignment_expression "lVar3 = FUN_000259e0()" identifier = (call_expression "FUN_000259e0()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }" statement_identifier : (if_statement "if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }" if (parenthesized_expression "(lVar1 == lVar2)" ( (binary_expression "lVar1 == lVar2" identifier == identifier) )) (compound_statement "{\n    lVar3 = lVar3 + -1;\n  }" { (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) }))) (return_statement "return lVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nLINENUM currline(int where)\n\n{\n  longlong lVar1;\n  POSITION PVar2;\n  longlong lVar3;\n  undefined4 in_stack_ffffffd4;\n  uint uVar4;\n  uint local_24;\n  \n  lVar1 = position(where);\n  PVar2 = ch_length();\n  uVar4 = (uint)PVar2;\n  local_24 = (uint)((ulonglong)PVar2 >> 0x20);\n  if ((lVar1 == -1) && (-1 < where)) {\n    if (where < sc_height) {\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }\nLAB_00026157:\n    if (linenums == 0) {\n      return -1;\n    }\n    if ((local_24 & uVar4) == 0xffffffff) {\n      return CONCAT44(local_24,uVar4);\n    }\n    lVar1 = CONCAT44(local_24,uVar4);\n    if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = find_linenum(CONCAT44(uVar4,in_stack_ffffffd4));\nLAB_000261c8:\n  if (lVar1 == CONCAT44(local_24,uVar4)) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}\n\n" comment (function_definition "LINENUM currline(int where)\n\n{\n  longlong lVar1;\n  POSITION PVar2;\n  longlong lVar3;\n  undefined4 in_stack_ffffffd4;\n  uint uVar4;\n  uint local_24;\n  \n  lVar1 = position(where);\n  PVar2 = ch_length();\n  uVar4 = (uint)PVar2;\n  local_24 = (uint)((ulonglong)PVar2 >> 0x20);\n  if ((lVar1 == -1) && (-1 < where)) {\n    if (where < sc_height) {\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }\nLAB_00026157:\n    if (linenums == 0) {\n      return -1;\n    }\n    if ((local_24 & uVar4) == 0xffffffff) {\n      return CONCAT44(local_24,uVar4);\n    }\n    lVar1 = CONCAT44(local_24,uVar4);\n    if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = find_linenum(CONCAT44(uVar4,in_stack_ffffffd4));\nLAB_000261c8:\n  if (lVar1 == CONCAT44(local_24,uVar4)) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" type_identifier (function_declarator "currline(int where)" identifier (parameter_list "(int where)" ( (parameter_declaration "int where" primitive_type identifier) ))) (compound_statement "{\n  longlong lVar1;\n  POSITION PVar2;\n  longlong lVar3;\n  undefined4 in_stack_ffffffd4;\n  uint uVar4;\n  uint local_24;\n  \n  lVar1 = position(where);\n  PVar2 = ch_length();\n  uVar4 = (uint)PVar2;\n  local_24 = (uint)((ulonglong)PVar2 >> 0x20);\n  if ((lVar1 == -1) && (-1 < where)) {\n    if (where < sc_height) {\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }\nLAB_00026157:\n    if (linenums == 0) {\n      return -1;\n    }\n    if ((local_24 & uVar4) == 0xffffffff) {\n      return CONCAT44(local_24,uVar4);\n    }\n    lVar1 = CONCAT44(local_24,uVar4);\n    if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = find_linenum(CONCAT44(uVar4,in_stack_ffffffd4));\nLAB_000261c8:\n  if (lVar1 == CONCAT44(local_24,uVar4)) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "POSITION PVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffd4;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "lVar1 = position(where);" (assignment_expression "lVar1 = position(where)" identifier = (call_expression "position(where)" identifier (argument_list "(where)" ( identifier )))) ;) (expression_statement "PVar2 = ch_length();" (assignment_expression "PVar2 = ch_length()" identifier = (call_expression "ch_length()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = (uint)PVar2;" (assignment_expression "uVar4 = (uint)PVar2" identifier = (cast_expression "(uint)PVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_24 = (uint)((ulonglong)PVar2 >> 0x20);" (assignment_expression "local_24 = (uint)((ulonglong)PVar2 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)PVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)PVar2 >> 0x20)" ( (binary_expression "(ulonglong)PVar2 >> 0x20" (cast_expression "(ulonglong)PVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((lVar1 == -1) && (-1 < where)) {\n    if (where < sc_height) {\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }\nLAB_00026157:\n    if (linenums == 0) {\n      return -1;\n    }\n    if ((local_24 & uVar4) == 0xffffffff) {\n      return CONCAT44(local_24,uVar4);\n    }\n    lVar1 = CONCAT44(local_24,uVar4);\n    if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" if (parenthesized_expression "((lVar1 == -1) && (-1 < where))" ( (binary_expression "(lVar1 == -1) && (-1 < where)" (parenthesized_expression "(lVar1 == -1)" ( (binary_expression "lVar1 == -1" identifier == number_literal) )) && (parenthesized_expression "(-1 < where)" ( (binary_expression "-1 < where" number_literal < identifier) ))) )) (compound_statement "{\n    if (where < sc_height) {\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }\nLAB_00026157:\n    if (linenums == 0) {\n      return -1;\n    }\n    if ((local_24 & uVar4) == 0xffffffff) {\n      return CONCAT44(local_24,uVar4);\n    }\n    lVar1 = CONCAT44(local_24,uVar4);\n    if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {\n      return 0;\n    }\n  }" { (if_statement "if (where < sc_height) {\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }" if (parenthesized_expression "(where < sc_height)" ( (binary_expression "where < sc_height" identifier < identifier) )) (compound_statement "{\n      do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);\n    }" { (do_statement "do {\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      } while (where < sc_height);" do (compound_statement "{\n        where = where + 1;\n        lVar1 = position(where);\n        if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;\n      }" { (expression_statement "where = where + 1;" (assignment_expression "where = where + 1" identifier = (binary_expression "where + 1" identifier + number_literal)) ;) (expression_statement "lVar1 = position(where);" (assignment_expression "lVar1 = position(where)" identifier = (call_expression "position(where)" identifier (argument_list "(where)" ( identifier )))) ;) (if_statement "if ((lVar1 != -1) || (where < 0)) goto LAB_0002618c;" if (parenthesized_expression "((lVar1 != -1) || (where < 0))" ( (binary_expression "(lVar1 != -1) || (where < 0)" (parenthesized_expression "(lVar1 != -1)" ( (binary_expression "lVar1 != -1" identifier != number_literal) )) || (parenthesized_expression "(where < 0)" ( (binary_expression "where < 0" identifier < number_literal) ))) )) (goto_statement "goto LAB_0002618c;" goto statement_identifier ;)) }) while (parenthesized_expression "(where < sc_height)" ( (binary_expression "where < sc_height" identifier < identifier) )) ;) })) (labeled_statement "LAB_00026157:\n    if (linenums == 0) {\n      return -1;\n    }" statement_identifier : (if_statement "if (linenums == 0) {\n      return -1;\n    }" if (parenthesized_expression "(linenums == 0)" ( (binary_expression "linenums == 0" identifier == number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) (if_statement "if ((local_24 & uVar4) == 0xffffffff) {\n      return CONCAT44(local_24,uVar4);\n    }" if (parenthesized_expression "((local_24 & uVar4) == 0xffffffff)" ( (binary_expression "(local_24 & uVar4) == 0xffffffff" (parenthesized_expression "(local_24 & uVar4)" ( (binary_expression "local_24 & uVar4" identifier & identifier) )) == number_literal) )) (compound_statement "{\n      return CONCAT44(local_24,uVar4);\n    }" { (return_statement "return CONCAT44(local_24,uVar4);" return (call_expression "CONCAT44(local_24,uVar4)" identifier (argument_list "(local_24,uVar4)" ( identifier , identifier ))) ;) })) (expression_statement "lVar1 = CONCAT44(local_24,uVar4);" (assignment_expression "lVar1 = CONCAT44(local_24,uVar4)" identifier = (call_expression "CONCAT44(local_24,uVar4)" identifier (argument_list "(local_24,uVar4)" ( identifier , identifier )))) ;) (if_statement "if ((int)(uint)(uVar4 != 0) <= (int)-local_24) {\n      return 0;\n    }" if (parenthesized_expression "((int)(uint)(uVar4 != 0) <= (int)-local_24)" ( (binary_expression "(int)(uint)(uVar4 != 0) <= (int)-local_24" (cast_expression "(int)(uint)(uVar4 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )))) <= (cast_expression "(int)-local_24" ( (type_descriptor "int" primitive_type) ) (unary_expression "-local_24" - identifier))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" else (compound_statement "{\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" { (labeled_statement "LAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;" statement_identifier : (if_statement "if (lVar1 == -1) goto LAB_00026157;" if (parenthesized_expression "(lVar1 == -1)" ( (binary_expression "lVar1 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00026157;" goto statement_identifier ;))) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (if_statement "if ((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;" if (parenthesized_expression "((linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))" ( (binary_expression "(linenums == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" (parenthesized_expression "(linenums == 0)" ( (binary_expression "linenums == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" ( (comma_expression "lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (assignment_expression "lVar3 = 1" identifier = number_literal) , (binary_expression "(int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (cast_expression "(int)(uint)((int)lVar1 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)lVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar1 != 0)" ( (binary_expression "(int)lVar1 != 0" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) <= (unary_expression "-(int)((ulonglong)lVar1 >> 0x20)" - (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))))) ))) )) (goto_statement "goto LAB_000261c8;" goto statement_identifier ;)) }))) (expression_statement "lVar3 = find_linenum(CONCAT44(uVar4,in_stack_ffffffd4));" (assignment_expression "lVar3 = find_linenum(CONCAT44(uVar4,in_stack_ffffffd4))" identifier = (call_expression "find_linenum(CONCAT44(uVar4,in_stack_ffffffd4))" identifier (argument_list "(CONCAT44(uVar4,in_stack_ffffffd4))" ( (call_expression "CONCAT44(uVar4,in_stack_ffffffd4)" identifier (argument_list "(uVar4,in_stack_ffffffd4)" ( identifier , identifier ))) )))) ;) (labeled_statement "LAB_000261c8:\n  if (lVar1 == CONCAT44(local_24,uVar4)) {\n    lVar3 = lVar3 + -1;\n  }" statement_identifier : (if_statement "if (lVar1 == CONCAT44(local_24,uVar4)) {\n    lVar3 = lVar3 + -1;\n  }" if (parenthesized_expression "(lVar1 == CONCAT44(local_24,uVar4))" ( (binary_expression "lVar1 == CONCAT44(local_24,uVar4)" identifier == (call_expression "CONCAT44(local_24,uVar4)" identifier (argument_list "(local_24,uVar4)" ( identifier , identifier )))) )) (compound_statement "{\n    lVar3 = lVar3 + -1;\n  }" { (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) }))) (return_statement "return lVar3;" return identifier ;) })))
(translation_unit "longlong FUN_000260e0(int param_1)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}\n\n" (function_definition "longlong FUN_000260e0(int param_1)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" type_identifier (function_declarator "FUN_000260e0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (expression_statement "lVar1 = FUN_0002b260(param_1);" (assignment_expression "lVar1 = FUN_0002b260(param_1)" identifier = (call_expression "FUN_0002b260(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "lVar2 = FUN_000162e0();" (assignment_expression "lVar2 = FUN_000162e0()" identifier = (call_expression "FUN_000162e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" if (parenthesized_expression "((lVar1 == -1) && (-1 < param_1))" ( (binary_expression "(lVar1 == -1) && (-1 < param_1)" (parenthesized_expression "(lVar1 == -1)" ( (binary_expression "lVar1 == -1" identifier == number_literal) )) && (parenthesized_expression "(-1 < param_1)" ( (binary_expression "-1 < param_1" number_literal < identifier) ))) )) (compound_statement "{\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }" { (if_statement "if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }" if (parenthesized_expression "(param_1 < DAT_000488e4)" ( (binary_expression "param_1 < DAT_000488e4" identifier < identifier) )) (compound_statement "{\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }" { (do_statement "do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);" do (compound_statement "{\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "lVar1 = FUN_0002b260(param_1);" (assignment_expression "lVar1 = FUN_0002b260(param_1)" identifier = (call_expression "FUN_0002b260(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;" if (parenthesized_expression "((lVar1 != -1) || (param_1 < 0))" ( (binary_expression "(lVar1 != -1) || (param_1 < 0)" (parenthesized_expression "(lVar1 != -1)" ( (binary_expression "lVar1 != -1" identifier != number_literal) )) || (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) ))) )) (goto_statement "goto LAB_0002618c;" goto statement_identifier ;)) }) while (parenthesized_expression "(param_1 < DAT_000488e4)" ( (binary_expression "param_1 < DAT_000488e4" identifier < identifier) )) ;) })) (labeled_statement "LAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }" statement_identifier : (if_statement "if (DAT_00048960 == 0) {\n      return -1;\n    }" if (parenthesized_expression "(DAT_00048960 == 0)" ( (binary_expression "DAT_00048960 == 0" identifier == number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) (if_statement "if (lVar2 == -1) {\n      return -1;\n    }" if (parenthesized_expression "(lVar2 == -1)" ( (binary_expression "lVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "lVar1 = lVar2;" (assignment_expression "lVar1 = lVar2" identifier = identifier) ;) (if_statement "if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }" if (parenthesized_expression "((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20))" ( (binary_expression "(int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)" (cast_expression "(int)(uint)((int)lVar2 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)lVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar2 != 0)" ( (binary_expression "(int)lVar2 != 0" (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) <= (unary_expression "-(int)((ulonglong)lVar2 >> 0x20)" - (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" else (compound_statement "{\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" { (labeled_statement "LAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;" statement_identifier : (if_statement "if (lVar1 == -1) goto LAB_00026157;" if (parenthesized_expression "(lVar1 == -1)" ( (binary_expression "lVar1 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00026157;" goto statement_identifier ;))) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (if_statement "if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;" if (parenthesized_expression "((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))" ( (binary_expression "(DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" (parenthesized_expression "(DAT_00048960 == 0)" ( (binary_expression "DAT_00048960 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" ( (comma_expression "lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (assignment_expression "lVar3 = 1" identifier = number_literal) , (binary_expression "(int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (cast_expression "(int)(uint)((int)lVar1 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)lVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar1 != 0)" ( (binary_expression "(int)lVar1 != 0" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) <= (unary_expression "-(int)((ulonglong)lVar1 >> 0x20)" - (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))))) ))) )) (goto_statement "goto LAB_000261c8;" goto statement_identifier ;)) }))) (expression_statement "lVar3 = FUN_000259e0();" (assignment_expression "lVar3 = FUN_000259e0()" identifier = (call_expression "FUN_000259e0()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }" statement_identifier : (if_statement "if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }" if (parenthesized_expression "(lVar1 == lVar2)" ( (binary_expression "lVar1 == lVar2" identifier == identifier) )) (compound_statement "{\n    lVar3 = lVar3 + -1;\n  }" { (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) }))) (return_statement "return lVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )))) <= (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))))) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )))) <= (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))))) ))) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "longlong FUN_000260e0(int param_1)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" (type_identifier "longlong") (function_declarator "FUN_000260e0(int param_1)" (identifier "FUN_000260e0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  longlong lVar2;\n  longlong lVar3;\n  \n  lVar1 = FUN_0002b260(param_1);\n  lVar2 = FUN_000162e0();\n  if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }\n  lVar3 = FUN_000259e0();\nLAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }\n  return lVar3;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "longlong lVar3;" (type_identifier "longlong") (identifier "lVar3") (; ";")) (expression_statement "lVar1 = FUN_0002b260(param_1);" (assignment_expression "lVar1 = FUN_0002b260(param_1)" (identifier "lVar1") (= "=") (call_expression "FUN_0002b260(param_1)" (identifier "FUN_0002b260") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "lVar2 = FUN_000162e0();" (assignment_expression "lVar2 = FUN_000162e0()" (identifier "lVar2") (= "=") (call_expression "FUN_000162e0()" (identifier "FUN_000162e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((lVar1 == -1) && (-1 < param_1)) {\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }\n  else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" (if "if") (parenthesized_expression "((lVar1 == -1) && (-1 < param_1))" (( "(") (binary_expression "(lVar1 == -1) && (-1 < param_1)" (parenthesized_expression "(lVar1 == -1)" (( "(") (binary_expression "lVar1 == -1" (identifier "lVar1") (== "==") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(-1 < param_1)" (( "(") (binary_expression "-1 < param_1" (number_literal "-1") (< "<") (identifier "param_1")) () ")"))) () ")")) (compound_statement "{\n    if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }\nLAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }\n    if (lVar2 == -1) {\n      return -1;\n    }\n    lVar1 = lVar2;\n    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (param_1 < DAT_000488e4) {\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }" (if "if") (parenthesized_expression "(param_1 < DAT_000488e4)" (( "(") (binary_expression "param_1 < DAT_000488e4" (identifier "param_1") (< "<") (identifier "DAT_000488e4")) () ")")) (compound_statement "{\n      do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);\n    }" ({ "{") (do_statement "do {\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      } while (param_1 < DAT_000488e4);" (do "do") (compound_statement "{\n        param_1 = param_1 + 1;\n        lVar1 = FUN_0002b260(param_1);\n        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;\n      }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar1 = FUN_0002b260(param_1);" (assignment_expression "lVar1 = FUN_0002b260(param_1)" (identifier "lVar1") (= "=") (call_expression "FUN_0002b260(param_1)" (identifier "FUN_0002b260") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;" (if "if") (parenthesized_expression "((lVar1 != -1) || (param_1 < 0))" (( "(") (binary_expression "(lVar1 != -1) || (param_1 < 0)" (parenthesized_expression "(lVar1 != -1)" (( "(") (binary_expression "lVar1 != -1" (identifier "lVar1") (!= "!=") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "(param_1 < 0)" (( "(") (binary_expression "param_1 < 0" (identifier "param_1") (< "<") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0002618c;" (goto "goto") (statement_identifier "LAB_0002618c") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(param_1 < DAT_000488e4)" (( "(") (binary_expression "param_1 < DAT_000488e4" (identifier "param_1") (< "<") (identifier "DAT_000488e4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00026157:\n    if (DAT_00048960 == 0) {\n      return -1;\n    }" (statement_identifier "LAB_00026157") (: ":") (if_statement "if (DAT_00048960 == 0) {\n      return -1;\n    }" (if "if") (parenthesized_expression "(DAT_00048960 == 0)" (( "(") (binary_expression "DAT_00048960 == 0" (identifier "DAT_00048960") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return -1;\n    }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}")))) (if_statement "if (lVar2 == -1) {\n      return -1;\n    }" (if "if") (parenthesized_expression "(lVar2 == -1)" (( "(") (binary_expression "lVar2 == -1" (identifier "lVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      return -1;\n    }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (expression_statement "lVar1 = lVar2;" (assignment_expression "lVar1 = lVar2" (identifier "lVar1") (= "=") (identifier "lVar2")) (; ";")) (if_statement "if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20))" (( "(") (binary_expression "(int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)" (cast_expression "(int)(uint)((int)lVar2 != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)((int)lVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)lVar2 != 0)" (( "(") (binary_expression "(int)lVar2 != 0" (cast_expression "(int)lVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar2")) (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (unary_expression "-(int)((ulonglong)lVar2 >> 0x20)" (- "-") (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" (else "else") (compound_statement "{\nLAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;\n    lVar3 = 0;\n    if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;\n  }" ({ "{") (labeled_statement "LAB_0002618c:\n    if (lVar1 == -1) goto LAB_00026157;" (statement_identifier "LAB_0002618c") (: ":") (if_statement "if (lVar1 == -1) goto LAB_00026157;" (if "if") (parenthesized_expression "(lVar1 == -1)" (( "(") (binary_expression "lVar1 == -1" (identifier "lVar1") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_00026157;" (goto "goto") (statement_identifier "LAB_00026157") (; ";")))) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" (identifier "lVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))\n    goto LAB_000261c8;" (if "if") (parenthesized_expression "((DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))" (( "(") (binary_expression "(DAT_00048960 == 0) ||\n       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" (parenthesized_expression "(DAT_00048960 == 0)" (( "(") (binary_expression "DAT_00048960 == 0" (identifier "DAT_00048960") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20))" (( "(") (comma_expression "lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (assignment_expression "lVar3 = 1" (identifier "lVar3") (= "=") (number_literal "1")) (, ",") (binary_expression "(int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)" (cast_expression "(int)(uint)((int)lVar1 != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)((int)lVar1 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)lVar1 != 0)" (( "(") (binary_expression "(int)lVar1 != 0" (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1")) (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (unary_expression "-(int)((ulonglong)lVar1 >> 0x20)" (- "-") (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))))) () ")"))) () ")")) (goto_statement "goto LAB_000261c8;" (goto "goto") (statement_identifier "LAB_000261c8") (; ";"))) (} "}")))) (expression_statement "lVar3 = FUN_000259e0();" (assignment_expression "lVar3 = FUN_000259e0()" (identifier "lVar3") (= "=") (call_expression "FUN_000259e0()" (identifier "FUN_000259e0") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_000261c8:\n  if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }" (statement_identifier "LAB_000261c8") (: ":") (if_statement "if (lVar1 == lVar2) {\n    lVar3 = lVar3 + -1;\n  }" (if "if") (parenthesized_expression "(lVar1 == lVar2)" (( "(") (binary_expression "lVar1 == lVar2" (identifier "lVar1") (== "==") (identifier "lVar2")) () ")")) (compound_statement "{\n    lVar3 = lVar3 + -1;\n  }" ({ "{") (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (return_statement "return lVar3;" (return "return") (identifier "lVar3") (; ";")) (} "}")))

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

type_1 function_1(int var_4)

{
  type_2 var_3;
  type_3 PVar2;
  type_2 var_11;
  type_4 in_stack_ffffffd4;
  type_5 var_8;
  type_5 var_7;
  
  var_3 = var_1(var_4);
  PVar2 = var_2();
  var_8 = (type_5)PVar2;
  var_7 = (type_5)((type_6)PVar2 >> 0x20);
  if ((var_3 == -1) && (-1 < var_4)) {
    if (var_4 < var_5) {
      do {
        var_4 = var_4 + 1;
        var_3 = var_1(var_4);
        if ((var_3 != -1) || (var_4 < 0)) goto LAB_0002618c;
      } while (var_4 < var_5);
    }
LAB_00026157:
    if (var_6 == 0) {
      return -1;
    }
    if ((var_7 & var_8) == 0xffffffff) {
      return var_9(var_7,var_8);
    }
    var_3 = var_9(var_7,var_8);
    if ((int)(type_5)(var_8 != 0) <= (int)-var_7) {
      return 0;
    }
  }
  else {
LAB_0002618c:
    if (var_3 == -1) goto LAB_00026157;
    var_11 = 0;
    if ((var_6 == 0) ||
       (var_11 = 1, (int)(type_5)((int)var_3 != 0) <= -(int)((type_6)var_3 >> 0x20)))
    goto LAB_000261c8;
  }
  var_11 = var_10(var_9(var_8,in_stack_ffffffd4));
LAB_000261c8:
  if (var_3 == var_9(var_7,var_8)) {
    var_11 = var_11 + -1;
  }
  return var_11;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) consequence: (compound_statement (return_statement (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (return_statement (identifier)))))

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

longlong MASKED(int param_1)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar1 = FUN_0002b260(param_1);
  lVar2 = FUN_000162e0();
  if ((lVar1 == -1) && (-1 < param_1)) {
    if (param_1 < DAT_000488e4) {
      do {
        param_1 = param_1 + 1;
        lVar1 = FUN_0002b260(param_1);
        if ((lVar1 != -1) || (param_1 < 0)) goto LAB_0002618c;
      } while (param_1 < DAT_000488e4);
    }
LAB_00026157:
    if (DAT_00048960 == 0) {
      return -1;
    }
    if (lVar2 == -1) {
      return -1;
    }
    lVar1 = lVar2;
    if ((int)(uint)((int)lVar2 != 0) <= -(int)((ulonglong)lVar2 >> 0x20)) {
      return 0;
    }
  }
  else {
LAB_0002618c:
    if (lVar1 == -1) goto LAB_00026157;
    lVar3 = 0;
    if ((DAT_00048960 == 0) ||
       (lVar3 = 1, (int)(uint)((int)lVar1 != 0) <= -(int)((ulonglong)lVar1 >> 0x20)))
    goto LAB_000261c8;
  }
  lVar3 = FUN_000259e0();
LAB_000261c8:
  if (lVar1 == lVar2) {
    lVar3 = lVar3 + -1;
  }
  return lVar3;
}

