
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

cstring * __regparm3 find_line(uintmax_t linenum)

{
  line *plVar1;
  _Bool _Var2;
  uint in_EAX;
  buffer_record *pbVar3;
  uint uVar4;
  uint in_EDX;
  uint uVar5;
  buffer_record *pbVar6;
  
  if ((head != (buffer_record *)0x0) || ((!have_read_eof && (_Var2 = load_buffer(), _Var2)))) {
    uVar4 = (uint)head->start_line;
    uVar5 = *(uint *)((int)&head->start_line + 4);
    pbVar6 = head;
    if (uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5) {
      do {
        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);
        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {
          plVar1 = pbVar6->line_start;
          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {
            plVar1 = plVar1->next;
          }
          return plVar1->starts + uVar4;
        }
        pbVar3 = pbVar6->next;
        if (pbVar3 == (buffer_record *)0x0) {
          if (have_read_eof != false) {
            return (cstring *)0x0;
          }
          _Var2 = load_buffer();
          if (!_Var2) {
            return (cstring *)0x0;
          }
          pbVar3 = pbVar6->next;
          if (pbVar3 == (buffer_record *)0x0) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("b","src/csplit.c",0x26a,"find_line");
          }
        }
        uVar4 = (uint)pbVar3->start_line;
        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);
        pbVar6 = pbVar3;
      } while( true );
    }
  }
  return (cstring *)0x0;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int __regparm3 FUN_00014650(uint param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  
  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {
    uVar5 = *(uint *)(DAT_000332d0 + 8);
    uVar3 = *(uint *)(DAT_000332d0 + 0xc);
    iVar4 = DAT_000332d0;
    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {
      do {
        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);
        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))
        {
          iVar4 = *(int *)(iVar4 + 0x20);
          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {
            iVar4 = *(int *)(iVar4 + 0x28c);
          }
          return iVar4 + 0xc + param_1 * 8;
        }
        iVar2 = *(int *)(iVar4 + 0x28);
        if (iVar2 == 0) {
          if (DAT_000332b0 != '\0') {
            return 0;
          }
          cVar1 = FUN_000140e0();
          if (cVar1 == '\0') {
            return 0;
          }
          iVar2 = *(int *)(iVar4 + 0x28);
          if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("b","src/csplit.c",0x26a,"find_line");
          }
        }
        uVar5 = *(uint *)(iVar2 + 8);
        uVar3 = *(uint *)(iVar2 + 0xc);
        iVar4 = iVar2;
      } while( true );
    }
  }
  return 0;
}


PUSH EBP
MOV ECX,EAX
PUSH EDI
PUSH ESI
CALL 0x00014b81
ADD ESI,0x1e9a6
PUSH EBX
SUB ESP,0x1c
MOV EDI,ESI
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,EDX
MOV EBX,dword ptr [EDI + 0x2d0]
TEST EBX,EBX
JZ 0x00014700
MOV EDI,dword ptr [EBX + 0x8]
MOV EBP,dword ptr [EBX + 0xc]
MOV EAX,ESI
CMP ECX,EDI
SBB EAX,EBP
JC 0x0001470d
MOV dword ptr [ESP + 0x8],ECX
JMP 0x000146a0
MOV EDI,dword ptr [EAX + 0x8]
MOV EBP,dword ptr [EAX + 0xc]
MOV EBX,EAX
MOV EAX,dword ptr [EBX + 0x18]
XOR EDX,EDX
MOV ECX,ESI
ADD EAX,EDI
ADC EDX,EBP
CMP dword ptr [ESP + 0x8],EAX
SBB ECX,EDX
JC 0x00014740
MOV EAX,dword ptr [EBX + 0x28]
TEST EAX,EAX
JNZ 0x00014698
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x2b0],0x0
JNZ 0x0001470d
CALL 0x000140e0
TEST AL,AL
JZ 0x0001470d
MOV EAX,dword ptr [EBX + 0x28]
TEST EAX,EAX
JNZ 0x00014698
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xffff6b20]
PUSH EAX
LEA EAX,[EBX + 0xffff6069]
PUSH 0x26a
PUSH EAX
LEA EAX,[EBX + 0xffff6076]
PUSH EAX
CALL 0x000124d0
CMP byte ptr [EDI + 0x2b0],0x0
MOV dword ptr [ESP + 0x8],EAX
JZ 0x00014720
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x000140e0
TEST AL,AL
JZ 0x0001470d
MOV EBX,dword ptr [EDI + 0x2d0]
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x0001467a
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EBX + 0x20]
SUB ECX,EDI
CMP ECX,0x4f
JBE 0x0001475e
NOP
SUB ECX,0x50
MOV EAX,dword ptr [EAX + 0x28c]
CMP ECX,0x4f
JA 0x00014750
ADD ESP,0x1c
LEA EAX,[EAX + ECX*0x8 + 0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nint __regparm3 FUN_00014650(uint param_1,uint param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "int __regparm3 FUN_00014650(uint param_1,uint param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00014650(uint param_1,uint param_2)" identifier (parameter_list "(uint param_1,uint param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }" if (parenthesized_expression "((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0'))))" ( (binary_expression "(DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))" (parenthesized_expression "(DAT_000332d0 != 0)" ( (binary_expression "DAT_000332d0 != 0" identifier != number_literal) )) || (parenthesized_expression "((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))" ( (parenthesized_expression "(DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0'))" ( (binary_expression "DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')" (binary_expression "DAT_000332b0 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(cVar1 = FUN_000140e0(), cVar1 != '\0')" ( (comma_expression "cVar1 = FUN_000140e0(), cVar1 != '\0'" (assignment_expression "cVar1 = FUN_000140e0()" identifier = (call_expression "FUN_000140e0()" identifier (argument_list "()" ( )))) , (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }" { (expression_statement "uVar5 = *(uint *)(DAT_000332d0 + 8);" (assignment_expression "uVar5 = *(uint *)(DAT_000332d0 + 8)" identifier = (pointer_expression "*(uint *)(DAT_000332d0 + 8)" * (cast_expression "(uint *)(DAT_000332d0 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000332d0 + 8)" ( (binary_expression "DAT_000332d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(DAT_000332d0 + 0xc);" (assignment_expression "uVar3 = *(uint *)(DAT_000332d0 + 0xc)" identifier = (pointer_expression "*(uint *)(DAT_000332d0 + 0xc)" * (cast_expression "(uint *)(DAT_000332d0 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000332d0 + 0xc)" ( (binary_expression "DAT_000332d0 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = DAT_000332d0;" (assignment_expression "iVar4 = DAT_000332d0" identifier = identifier) ;) (if_statement "if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }" if (parenthesized_expression "(uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3)" ( (binary_expression "uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3" (binary_expression "uVar3 <= param_2" identifier <= identifier) && (binary_expression "(uint)(param_1 < uVar5) <= param_2 - uVar3" (call_expression "(uint)(param_1 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) ))) <= (binary_expression "param_2 - uVar3" identifier - identifier))) )) (compound_statement "{\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }" { (do_statement "do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );" do (compound_statement "{\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      }" { (expression_statement "uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);" (assignment_expression "uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" identifier = (binary_expression "uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" identifier + (call_expression "CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" identifier (argument_list "(*(uint *)(iVar4 + 0x18),uVar5)" ( (pointer_expression "*(uint *)(iVar4 + 0x18)" * (cast_expression "(uint *)(iVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) , identifier ))))) ;) (if_statement "if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }" if (parenthesized_expression "(param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))" ( (binary_expression "param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (binary_expression "param_2 < uVar3" identifier < identifier) || (binary_expression "param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (binary_expression "param_2 - uVar3" identifier - identifier) < (call_expression "(uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" ( (binary_expression "param_1 < *(uint *)(iVar4 + 0x18) + uVar5" identifier < (binary_expression "*(uint *)(iVar4 + 0x18) + uVar5" (pointer_expression "*(uint *)(iVar4 + 0x18)" * (cast_expression "(uint *)(iVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) + identifier)) ))))) )) (compound_statement "{\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }" { (expression_statement "iVar4 = *(int *)(iVar4 + 0x20);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x20)" identifier = (pointer_expression "*(int *)(iVar4 + 0x20)" * (cast_expression "(int *)(iVar4 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x20)" ( (binary_expression "iVar4 + 0x20" identifier + number_literal) ))))) ;) (for_statement "for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }" for ( (assignment_expression "param_1 = param_1 - uVar5" identifier = (binary_expression "param_1 - uVar5" identifier - identifier)) ; (binary_expression "0x4f < param_1" number_literal < identifier) ; (assignment_expression "param_1 = param_1 - 0x50" identifier = (binary_expression "param_1 - 0x50" identifier - number_literal)) ) (compound_statement "{\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }" { (expression_statement "iVar4 = *(int *)(iVar4 + 0x28c);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28c)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28c)" * (cast_expression "(int *)(iVar4 + 0x28c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28c)" ( (binary_expression "iVar4 + 0x28c" identifier + number_literal) ))))) ;) })) (return_statement "return iVar4 + 0xc + param_1 * 8;" return (binary_expression "iVar4 + 0xc + param_1 * 8" (binary_expression "iVar4 + 0xc" identifier + number_literal) + (binary_expression "param_1 * 8" identifier * number_literal)) ;) })) (expression_statement "iVar2 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" { (if_statement "if (DAT_000332b0 != '\0') {\n            return 0;\n          }" if (parenthesized_expression "(DAT_000332b0 != '\0')" ( (binary_expression "DAT_000332b0 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar1 = FUN_000140e0();" (assignment_expression "cVar1 = FUN_000140e0()" identifier = (call_expression "FUN_000140e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar1 == '\0') {\n            return 0;\n          }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" { comment (expression_statement "__assert_fail("b","src/csplit.c",0x26a,"find_line");" (call_expression "__assert_fail("b","src/csplit.c",0x26a,"find_line")" identifier (argument_list "("b","src/csplit.c",0x26a,"find_line")" ( (string_literal ""b"" " string_content ") , (string_literal ""src/csplit.c"" " string_content ") , number_literal , (string_literal ""find_line"" " string_content ") ))) ;) })) })) (expression_statement "uVar5 = *(uint *)(iVar2 + 8);" (assignment_expression "uVar5 = *(uint *)(iVar2 + 8)" identifier = (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar2 + 0xc);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar2 + 0xc)" * (cast_expression "(uint *)(iVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\ncstring * __regparm3 find_line(uintmax_t linenum)\n\n{\n  line *plVar1;\n  _Bool _Var2;\n  uint in_EAX;\n  buffer_record *pbVar3;\n  uint uVar4;\n  uint in_EDX;\n  uint uVar5;\n  buffer_record *pbVar6;\n  \n  if ((head != (buffer_record *)0x0) || ((!have_read_eof && (_Var2 = load_buffer(), _Var2)))) {\n    uVar4 = (uint)head->start_line;\n    uVar5 = *(uint *)((int)&head->start_line + 4);\n    pbVar6 = head;\n    if (uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5) {\n      do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );\n    }\n  }\n  return (cstring *)0x0;\n}\n\n" comment (ERROR "cstring * __regparm3 find_line(uintmax_t linenum)" (binary_expression "cstring * __regparm3 find_line(uintmax_t linenum)" identifier * (ERROR "__regparm3" identifier) (call_expression "find_line(uintmax_t linenum)" identifier (argument_list "(uintmax_t linenum)" ( identifier (ERROR "linenum" identifier) ))))) (compound_statement "{\n  line *plVar1;\n  _Bool _Var2;\n  uint in_EAX;\n  buffer_record *pbVar3;\n  uint uVar4;\n  uint in_EDX;\n  uint uVar5;\n  buffer_record *pbVar6;\n  \n  if ((head != (buffer_record *)0x0) || ((!have_read_eof && (_Var2 = load_buffer(), _Var2)))) {\n    uVar4 = (uint)head->start_line;\n    uVar5 = *(uint *)((int)&head->start_line + 4);\n    pbVar6 = head;\n    if (uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5) {\n      do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );\n    }\n  }\n  return (cstring *)0x0;\n}" { (declaration "line *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "_Bool _Var2;" type_identifier identifier ;) (declaration "uint in_EAX;" type_identifier identifier ;) (declaration "buffer_record *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint in_EDX;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "buffer_record *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (if_statement "if ((head != (buffer_record *)0x0) || ((!have_read_eof && (_Var2 = load_buffer(), _Var2)))) {\n    uVar4 = (uint)head->start_line;\n    uVar5 = *(uint *)((int)&head->start_line + 4);\n    pbVar6 = head;\n    if (uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5) {\n      do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );\n    }\n  }" if (parenthesized_expression "((head != (buffer_record *)0x0) || ((!have_read_eof && (_Var2 = load_buffer(), _Var2))))" ( (binary_expression "(head != (buffer_record *)0x0) || ((!have_read_eof && (_Var2 = load_buffer(), _Var2)))" (parenthesized_expression "(head != (buffer_record *)0x0)" ( (binary_expression "head != (buffer_record *)0x0" identifier != (cast_expression "(buffer_record *)0x0" ( (type_descriptor "buffer_record *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((!have_read_eof && (_Var2 = load_buffer(), _Var2)))" ( (parenthesized_expression "(!have_read_eof && (_Var2 = load_buffer(), _Var2))" ( (binary_expression "!have_read_eof && (_Var2 = load_buffer(), _Var2)" (unary_expression "!have_read_eof" ! identifier) && (parenthesized_expression "(_Var2 = load_buffer(), _Var2)" ( (comma_expression "_Var2 = load_buffer(), _Var2" (assignment_expression "_Var2 = load_buffer()" identifier = (call_expression "load_buffer()" identifier (argument_list "()" ( )))) , identifier) ))) )) ))) )) (compound_statement "{\n    uVar4 = (uint)head->start_line;\n    uVar5 = *(uint *)((int)&head->start_line + 4);\n    pbVar6 = head;\n    if (uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5) {\n      do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );\n    }\n  }" { (expression_statement "uVar4 = (uint)head->start_line;" (assignment_expression "uVar4 = (uint)head->start_line" identifier = (cast_expression "(uint)head->start_line" ( (type_descriptor "uint" type_identifier) ) (field_expression "head->start_line" identifier -> field_identifier))) ;) (expression_statement "uVar5 = *(uint *)((int)&head->start_line + 4);" (assignment_expression "uVar5 = *(uint *)((int)&head->start_line + 4)" identifier = (pointer_expression "*(uint *)((int)&head->start_line + 4)" * (cast_expression "(uint *)((int)&head->start_line + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&head->start_line + 4)" ( (binary_expression "(int)&head->start_line + 4" (cast_expression "(int)&head->start_line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&head->start_line" & (field_expression "head->start_line" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pbVar6 = head;" (assignment_expression "pbVar6 = head" identifier = identifier) ;) (if_statement "if (uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5) {\n      do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );\n    }" if (parenthesized_expression "(uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5)" ( (binary_expression "uVar5 <= in_EDX && (uint)(in_EAX < uVar4) <= in_EDX - uVar5" (binary_expression "uVar5 <= in_EDX" identifier <= identifier) && (binary_expression "(uint)(in_EAX < uVar4) <= in_EDX - uVar5" (call_expression "(uint)(in_EAX < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_EAX < uVar4)" ( (binary_expression "in_EAX < uVar4" identifier < identifier) ))) <= (binary_expression "in_EDX - uVar5" identifier - identifier))) )) (compound_statement "{\n      do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );\n    }" { (do_statement "do {\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      } while( true );" do (compound_statement "{\n        uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);\n        if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }\n        pbVar3 = pbVar6->next;\n        if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar4 = (uint)pbVar3->start_line;\n        uVar5 = *(uint *)((int)&pbVar3->start_line + 4);\n        pbVar6 = pbVar3;\n      }" { (expression_statement "uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4);" (assignment_expression "uVar5 = uVar5 + CARRY4(pbVar6->num_lines,uVar4)" identifier = (binary_expression "uVar5 + CARRY4(pbVar6->num_lines,uVar4)" identifier + (call_expression "CARRY4(pbVar6->num_lines,uVar4)" identifier (argument_list "(pbVar6->num_lines,uVar4)" ( (field_expression "pbVar6->num_lines" identifier -> field_identifier) , identifier ))))) ;) (if_statement "if (in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)) {\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }" if (parenthesized_expression "(in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4))" ( (binary_expression "in_EDX < uVar5 || in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)" (binary_expression "in_EDX < uVar5" identifier < identifier) || (binary_expression "in_EDX - uVar5 < (uint)(in_EAX < pbVar6->num_lines + uVar4)" (binary_expression "in_EDX - uVar5" identifier - identifier) < (call_expression "(uint)(in_EAX < pbVar6->num_lines + uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_EAX < pbVar6->num_lines + uVar4)" ( (binary_expression "in_EAX < pbVar6->num_lines + uVar4" identifier < (binary_expression "pbVar6->num_lines + uVar4" (field_expression "pbVar6->num_lines" identifier -> field_identifier) + identifier)) ))))) )) (compound_statement "{\n          plVar1 = pbVar6->line_start;\n          for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }\n          return plVar1->starts + uVar4;\n        }" { (expression_statement "plVar1 = pbVar6->line_start;" (assignment_expression "plVar1 = pbVar6->line_start" identifier = (field_expression "pbVar6->line_start" identifier -> field_identifier)) ;) (for_statement "for (uVar4 = in_EAX - uVar4; 0x4f < uVar4; uVar4 = uVar4 - 0x50) {\n            plVar1 = plVar1->next;\n          }" for ( (assignment_expression "uVar4 = in_EAX - uVar4" identifier = (binary_expression "in_EAX - uVar4" identifier - identifier)) ; (binary_expression "0x4f < uVar4" number_literal < identifier) ; (assignment_expression "uVar4 = uVar4 - 0x50" identifier = (binary_expression "uVar4 - 0x50" identifier - number_literal)) ) (compound_statement "{\n            plVar1 = plVar1->next;\n          }" { (expression_statement "plVar1 = plVar1->next;" (assignment_expression "plVar1 = plVar1->next" identifier = (field_expression "plVar1->next" identifier -> field_identifier)) ;) })) (return_statement "return plVar1->starts + uVar4;" return (binary_expression "plVar1->starts + uVar4" (field_expression "plVar1->starts" identifier -> field_identifier) + identifier) ;) })) (expression_statement "pbVar3 = pbVar6->next;" (assignment_expression "pbVar3 = pbVar6->next" identifier = (field_expression "pbVar6->next" identifier -> field_identifier)) ;) (if_statement "if (pbVar3 == (buffer_record *)0x0) {\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" if (parenthesized_expression "(pbVar3 == (buffer_record *)0x0)" ( (binary_expression "pbVar3 == (buffer_record *)0x0" identifier == (cast_expression "(buffer_record *)0x0" ( (type_descriptor "buffer_record *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }\n          _Var2 = load_buffer();\n          if (!_Var2) {\n            return (cstring *)0x0;\n          }\n          pbVar3 = pbVar6->next;\n          if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" { (if_statement "if (have_read_eof != false) {\n            return (cstring *)0x0;\n          }" if (parenthesized_expression "(have_read_eof != false)" ( (binary_expression "have_read_eof != false" identifier != false) )) (compound_statement "{\n            return (cstring *)0x0;\n          }" { (return_statement "return (cstring *)0x0;" return (cast_expression "(cstring *)0x0" ( (type_descriptor "cstring *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "_Var2 = load_buffer();" (assignment_expression "_Var2 = load_buffer()" identifier = (call_expression "load_buffer()" identifier (argument_list "()" ( )))) ;) (if_statement "if (!_Var2) {\n            return (cstring *)0x0;\n          }" if (parenthesized_expression "(!_Var2)" ( (unary_expression "!_Var2" ! identifier) )) (compound_statement "{\n            return (cstring *)0x0;\n          }" { (return_statement "return (cstring *)0x0;" return (cast_expression "(cstring *)0x0" ( (type_descriptor "cstring *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pbVar3 = pbVar6->next;" (assignment_expression "pbVar3 = pbVar6->next" identifier = (field_expression "pbVar6->next" identifier -> field_identifier)) ;) (if_statement "if (pbVar3 == (buffer_record *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" if (parenthesized_expression "(pbVar3 == (buffer_record *)0x0)" ( (binary_expression "pbVar3 == (buffer_record *)0x0" identifier == (cast_expression "(buffer_record *)0x0" ( (type_descriptor "buffer_record *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" { comment (expression_statement "__assert_fail("b","src/csplit.c",0x26a,"find_line");" (call_expression "__assert_fail("b","src/csplit.c",0x26a,"find_line")" identifier (argument_list "("b","src/csplit.c",0x26a,"find_line")" ( (string_literal ""b"" " string_content ") , (string_literal ""src/csplit.c"" " string_content ") , number_literal , (string_literal ""find_line"" " string_content ") ))) ;) })) })) (expression_statement "uVar4 = (uint)pbVar3->start_line;" (assignment_expression "uVar4 = (uint)pbVar3->start_line" identifier = (cast_expression "(uint)pbVar3->start_line" ( (type_descriptor "uint" type_identifier) ) (field_expression "pbVar3->start_line" identifier -> field_identifier))) ;) (expression_statement "uVar5 = *(uint *)((int)&pbVar3->start_line + 4);" (assignment_expression "uVar5 = *(uint *)((int)&pbVar3->start_line + 4)" identifier = (pointer_expression "*(uint *)((int)&pbVar3->start_line + 4)" * (cast_expression "(uint *)((int)&pbVar3->start_line + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar3->start_line + 4)" ( (binary_expression "(int)&pbVar3->start_line + 4" (cast_expression "(int)&pbVar3->start_line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar3->start_line" & (field_expression "pbVar3->start_line" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pbVar6 = pbVar3;" (assignment_expression "pbVar6 = pbVar3" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (return_statement "return (cstring *)0x0;" return (cast_expression "(cstring *)0x0" ( (type_descriptor "cstring *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))
(translation_unit "int __regparm3 FUN_00014650(uint param_1,uint param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00014650(uint param_1,uint param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00014650(uint param_1,uint param_2)" identifier (parameter_list "(uint param_1,uint param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }" if (parenthesized_expression "((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0'))))" ( (binary_expression "(DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))" (parenthesized_expression "(DAT_000332d0 != 0)" ( (binary_expression "DAT_000332d0 != 0" identifier != number_literal) )) || (parenthesized_expression "((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))" ( (parenthesized_expression "(DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0'))" ( (binary_expression "DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')" (binary_expression "DAT_000332b0 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(cVar1 = FUN_000140e0(), cVar1 != '\0')" ( (comma_expression "cVar1 = FUN_000140e0(), cVar1 != '\0'" (assignment_expression "cVar1 = FUN_000140e0()" identifier = (call_expression "FUN_000140e0()" identifier (argument_list "()" ( )))) , (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }" { (expression_statement "uVar5 = *(uint *)(DAT_000332d0 + 8);" (assignment_expression "uVar5 = *(uint *)(DAT_000332d0 + 8)" identifier = (pointer_expression "*(uint *)(DAT_000332d0 + 8)" * (cast_expression "(uint *)(DAT_000332d0 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000332d0 + 8)" ( (binary_expression "DAT_000332d0 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(DAT_000332d0 + 0xc);" (assignment_expression "uVar3 = *(uint *)(DAT_000332d0 + 0xc)" identifier = (pointer_expression "*(uint *)(DAT_000332d0 + 0xc)" * (cast_expression "(uint *)(DAT_000332d0 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000332d0 + 0xc)" ( (binary_expression "DAT_000332d0 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = DAT_000332d0;" (assignment_expression "iVar4 = DAT_000332d0" identifier = identifier) ;) (if_statement "if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }" if (parenthesized_expression "(uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3)" ( (binary_expression "uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3" (binary_expression "uVar3 <= param_2" identifier <= identifier) && (binary_expression "(uint)(param_1 < uVar5) <= param_2 - uVar3" (call_expression "(uint)(param_1 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) ))) <= (binary_expression "param_2 - uVar3" identifier - identifier))) )) (compound_statement "{\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }" { (do_statement "do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );" do (compound_statement "{\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      }" { (expression_statement "uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);" (assignment_expression "uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" identifier = (binary_expression "uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" identifier + (call_expression "CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" identifier (argument_list "(*(uint *)(iVar4 + 0x18),uVar5)" ( (pointer_expression "*(uint *)(iVar4 + 0x18)" * (cast_expression "(uint *)(iVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) , identifier ))))) ;) (if_statement "if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }" if (parenthesized_expression "(param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))" ( (binary_expression "param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (binary_expression "param_2 < uVar3" identifier < identifier) || (binary_expression "param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (binary_expression "param_2 - uVar3" identifier - identifier) < (call_expression "(uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" ( (binary_expression "param_1 < *(uint *)(iVar4 + 0x18) + uVar5" identifier < (binary_expression "*(uint *)(iVar4 + 0x18) + uVar5" (pointer_expression "*(uint *)(iVar4 + 0x18)" * (cast_expression "(uint *)(iVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) + identifier)) ))))) )) (compound_statement "{\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }" { (expression_statement "iVar4 = *(int *)(iVar4 + 0x20);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x20)" identifier = (pointer_expression "*(int *)(iVar4 + 0x20)" * (cast_expression "(int *)(iVar4 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x20)" ( (binary_expression "iVar4 + 0x20" identifier + number_literal) ))))) ;) (for_statement "for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }" for ( (assignment_expression "param_1 = param_1 - uVar5" identifier = (binary_expression "param_1 - uVar5" identifier - identifier)) ; (binary_expression "0x4f < param_1" number_literal < identifier) ; (assignment_expression "param_1 = param_1 - 0x50" identifier = (binary_expression "param_1 - 0x50" identifier - number_literal)) ) (compound_statement "{\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }" { (expression_statement "iVar4 = *(int *)(iVar4 + 0x28c);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28c)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28c)" * (cast_expression "(int *)(iVar4 + 0x28c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28c)" ( (binary_expression "iVar4 + 0x28c" identifier + number_literal) ))))) ;) })) (return_statement "return iVar4 + 0xc + param_1 * 8;" return (binary_expression "iVar4 + 0xc + param_1 * 8" (binary_expression "iVar4 + 0xc" identifier + number_literal) + (binary_expression "param_1 * 8" identifier * number_literal)) ;) })) (expression_statement "iVar2 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" { (if_statement "if (DAT_000332b0 != '\0') {\n            return 0;\n          }" if (parenthesized_expression "(DAT_000332b0 != '\0')" ( (binary_expression "DAT_000332b0 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar1 = FUN_000140e0();" (assignment_expression "cVar1 = FUN_000140e0()" identifier = (call_expression "FUN_000140e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar1 == '\0') {\n            return 0;\n          }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" { (expression_statement "__assert_fail("b","src/csplit.c",0x26a,"find_line");" (call_expression "__assert_fail("b","src/csplit.c",0x26a,"find_line")" identifier (argument_list "("b","src/csplit.c",0x26a,"find_line")" ( (string_literal ""b"" " string_content ") , (string_literal ""src/csplit.c"" " string_content ") , number_literal , (string_literal ""find_line"" " string_content ") ))) ;) })) })) (expression_statement "uVar5 = *(uint *)(iVar2 + 8);" (assignment_expression "uVar5 = *(uint *)(iVar2 + 8)" identifier = (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar2 + 0xc);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar2 + 0xc)" * (cast_expression "(uint *)(iVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != (char_literal ' escape_sequence '))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) <= (binary_expression IDENT - IDENT))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (return_statement return (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_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 == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) })) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_00014650(uint param_1,uint param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00014650(uint param_1,uint param_2)" (identifier "FUN_00014650") (parameter_list "(uint param_1,uint param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (if_statement "if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0'))))" (( "(") (binary_expression "(DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))" (parenthesized_expression "(DAT_000332d0 != 0)" (( "(") (binary_expression "DAT_000332d0 != 0" (identifier "DAT_000332d0") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))" (( "(") (parenthesized_expression "(DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0'))" (( "(") (binary_expression "DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')" (binary_expression "DAT_000332b0 == '\0'" (identifier "DAT_000332b0") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(cVar1 = FUN_000140e0(), cVar1 != '\0')" (( "(") (comma_expression "cVar1 = FUN_000140e0(), cVar1 != '\0'" (assignment_expression "cVar1 = FUN_000140e0()" (identifier "cVar1") (= "=") (call_expression "FUN_000140e0()" (identifier "FUN_000140e0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    uVar5 = *(uint *)(DAT_000332d0 + 8);\n    uVar3 = *(uint *)(DAT_000332d0 + 0xc);\n    iVar4 = DAT_000332d0;\n    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }\n  }" ({ "{") (expression_statement "uVar5 = *(uint *)(DAT_000332d0 + 8);" (assignment_expression "uVar5 = *(uint *)(DAT_000332d0 + 8)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(DAT_000332d0 + 8)" (* "*") (cast_expression "(uint *)(DAT_000332d0 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000332d0 + 8)" (( "(") (binary_expression "DAT_000332d0 + 8" (identifier "DAT_000332d0") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(DAT_000332d0 + 0xc);" (assignment_expression "uVar3 = *(uint *)(DAT_000332d0 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(DAT_000332d0 + 0xc)" (* "*") (cast_expression "(uint *)(DAT_000332d0 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000332d0 + 0xc)" (( "(") (binary_expression "DAT_000332d0 + 0xc" (identifier "DAT_000332d0") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar4 = DAT_000332d0;" (assignment_expression "iVar4 = DAT_000332d0" (identifier "iVar4") (= "=") (identifier "DAT_000332d0")) (; ";")) (if_statement "if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3)" (( "(") (binary_expression "uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3" (binary_expression "uVar3 <= param_2" (identifier "uVar3") (<= "<=") (identifier "param_2")) (&& "&&") (binary_expression "(uint)(param_1 < uVar5) <= param_2 - uVar3" (call_expression "(uint)(param_1 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 < uVar5)" (( "(") (binary_expression "param_1 < uVar5" (identifier "param_1") (< "<") (identifier "uVar5")) () ")"))) (<= "<=") (binary_expression "param_2 - uVar3" (identifier "param_2") (- "-") (identifier "uVar3")))) () ")")) (compound_statement "{\n      do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );\n    }" ({ "{") (do_statement "do {\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      } while( true );" (do "do") (compound_statement "{\n        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);\n        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }\n        iVar2 = *(int *)(iVar4 + 0x28);\n        if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }\n        uVar5 = *(uint *)(iVar2 + 8);\n        uVar3 = *(uint *)(iVar2 + 0xc);\n        iVar4 = iVar2;\n      }" ({ "{") (expression_statement "uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);" (assignment_expression "uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" (identifier "uVar3") (= "=") (binary_expression "uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" (identifier "uVar3") (+ "+") (call_expression "CARRY4(*(uint *)(iVar4 + 0x18),uVar5)" (identifier "CARRY4") (argument_list "(*(uint *)(iVar4 + 0x18),uVar5)" (( "(") (pointer_expression "*(uint *)(iVar4 + 0x18)" (* "*") (cast_expression "(uint *)(iVar4 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "uVar5") () ")"))))) (; ";")) (if_statement "if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))\n        {\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }" (if "if") (parenthesized_expression "(param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))" (( "(") (binary_expression "param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (binary_expression "param_2 < uVar3" (identifier "param_2") (< "<") (identifier "uVar3")) (|| "||") (binary_expression "param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (binary_expression "param_2 - uVar3" (identifier "param_2") (- "-") (identifier "uVar3")) (< "<") (call_expression "(uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 < *(uint *)(iVar4 + 0x18) + uVar5)" (( "(") (binary_expression "param_1 < *(uint *)(iVar4 + 0x18) + uVar5" (identifier "param_1") (< "<") (binary_expression "*(uint *)(iVar4 + 0x18) + uVar5" (pointer_expression "*(uint *)(iVar4 + 0x18)" (* "*") (cast_expression "(uint *)(iVar4 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "uVar5"))) () ")"))))) () ")")) (compound_statement "{\n          iVar4 = *(int *)(iVar4 + 0x20);\n          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }\n          return iVar4 + 0xc + param_1 * 8;\n        }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar4 + 0x20);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x20)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 0x20)" (* "*") (cast_expression "(int *)(iVar4 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x20)" (( "(") (binary_expression "iVar4 + 0x20" (identifier "iVar4") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (for_statement "for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }" (for "for") (( "(") (assignment_expression "param_1 = param_1 - uVar5" (identifier "param_1") (= "=") (binary_expression "param_1 - uVar5" (identifier "param_1") (- "-") (identifier "uVar5"))) (; ";") (binary_expression "0x4f < param_1" (number_literal "0x4f") (< "<") (identifier "param_1")) (; ";") (assignment_expression "param_1 = param_1 - 0x50" (identifier "param_1") (= "=") (binary_expression "param_1 - 0x50" (identifier "param_1") (- "-") (number_literal "0x50"))) () ")") (compound_statement "{\n            iVar4 = *(int *)(iVar4 + 0x28c);\n          }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar4 + 0x28c);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 0x28c)" (* "*") (cast_expression "(int *)(iVar4 + 0x28c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x28c)" (( "(") (binary_expression "iVar4 + 0x28c" (identifier "iVar4") (+ "+") (number_literal "0x28c")) () ")"))))) (; ";")) (} "}"))) (return_statement "return iVar4 + 0xc + param_1 * 8;" (return "return") (binary_expression "iVar4 + 0xc + param_1 * 8" (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) (+ "+") (binary_expression "param_1 * 8" (identifier "param_1") (* "*") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x28)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar4 + 0x28)" (* "*") (cast_expression "(int *)(iVar4 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x28)" (( "(") (binary_expression "iVar4 + 0x28" (identifier "iVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (DAT_000332b0 != '\0') {\n            return 0;\n          }\n          cVar1 = FUN_000140e0();\n          if (cVar1 == '\0') {\n            return 0;\n          }\n          iVar2 = *(int *)(iVar4 + 0x28);\n          if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }\n        }" ({ "{") (if_statement "if (DAT_000332b0 != '\0') {\n            return 0;\n          }" (if "if") (parenthesized_expression "(DAT_000332b0 != '\0')" (( "(") (binary_expression "DAT_000332b0 != '\0'" (identifier "DAT_000332b0") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "cVar1 = FUN_000140e0();" (assignment_expression "cVar1 = FUN_000140e0()" (identifier "cVar1") (= "=") (call_expression "FUN_000140e0()" (identifier "FUN_000140e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar1 == '\0') {\n            return 0;\n          }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x28)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar4 + 0x28)" (* "*") (cast_expression "(int *)(iVar4 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x28)" (( "(") (binary_expression "iVar4 + 0x28" (identifier "iVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n            __assert_fail("b","src/csplit.c",0x26a,"find_line");\n          }" ({ "{") (expression_statement "__assert_fail("b","src/csplit.c",0x26a,"find_line");" (call_expression "__assert_fail("b","src/csplit.c",0x26a,"find_line")" (identifier "__assert_fail") (argument_list "("b","src/csplit.c",0x26a,"find_line")" (( "(") (string_literal ""b"" (" """) (string_content "b") (" """)) (, ",") (string_literal ""src/csplit.c"" (" """) (string_content "src/csplit.c") (" """)) (, ",") (number_literal "0x26a") (, ",") (string_literal ""find_line"" (" """) (string_content "find_line") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar5 = *(uint *)(iVar2 + 8);" (assignment_expression "uVar5 = *(uint *)(iVar2 + 8)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar2 + 8)" (* "*") (cast_expression "(uint *)(iVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(iVar2 + 0xc);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar2 + 0xc)" (* "*") (cast_expression "(uint *)(iVar2 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar4 = iVar2;" (assignment_expression "iVar4 = iVar2" (identifier "iVar4") (= "=") (identifier "iVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

type_5 * __regparm3 find_line(uintmax_t linenum)

{
  type_1 *plVar1;
  type_2 _Var2;
  type_3 var_5;
  type_4 *var_8;
  type_3 var_6;
  type_3 var_4;
  type_3 var_3;
  type_4 *pbVar6;
  
  if ((var_1 != (type_4 *)0x0) || ((!var_9 && (_Var2 = var_2(), _Var2)))) {
    var_6 = (type_3)var_1->start_line;
    var_3 = *(type_3 *)((int)&var_1->start_line + 4);
    pbVar6 = var_1;
    if (var_3 <= var_4 && (type_3)(var_5 < var_6) <= var_4 - var_3) {
      do {
        var_3 = var_3 + var_7(pbVar6->num_lines,var_6);
        if (var_4 < var_3 || var_4 - var_3 < (type_3)(var_5 < pbVar6->num_lines + var_6)) {
          plVar1 = pbVar6->line_start;
          for (var_6 = var_5 - var_6; 0x4f < var_6; var_6 = var_6 - 0x50) {
            plVar1 = plVar1->next;
          }
          return plVar1->starts + var_6;
        }
        var_8 = pbVar6->next;
        if (var_8 == (type_4 *)0x0) {
          if (var_9 != false) {
            return (type_5 *)0x0;
          }
          _Var2 = var_2();
          if (!_Var2) {
            return (type_5 *)0x0;
          }
          var_8 = pbVar6->next;
          if (var_8 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
            var_10("b","src/csplit.c",0x26a,"find_line");
          }
        }
        var_6 = (type_3)var_8->start_line;
        var_3 = *(type_3 *)((int)&var_8->start_line + 4);
        pbVar6 = var_8;
      } while( true );
    }
  }
  return (type_5 *)0x0;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int __regparm3 MASKED(uint param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  
  if ((DAT_000332d0 != 0) || ((DAT_000332b0 == '\0' && (cVar1 = FUN_000140e0(), cVar1 != '\0')))) {
    uVar5 = *(uint *)(DAT_000332d0 + 8);
    uVar3 = *(uint *)(DAT_000332d0 + 0xc);
    iVar4 = DAT_000332d0;
    if (uVar3 <= param_2 && (uint)(param_1 < uVar5) <= param_2 - uVar3) {
      do {
        uVar3 = uVar3 + CARRY4(*(uint *)(iVar4 + 0x18),uVar5);
        if (param_2 < uVar3 || param_2 - uVar3 < (uint)(param_1 < *(uint *)(iVar4 + 0x18) + uVar5))
        {
          iVar4 = *(int *)(iVar4 + 0x20);
          for (param_1 = param_1 - uVar5; 0x4f < param_1; param_1 = param_1 - 0x50) {
            iVar4 = *(int *)(iVar4 + 0x28c);
          }
          return iVar4 + 0xc + param_1 * 8;
        }
        iVar2 = *(int *)(iVar4 + 0x28);
        if (iVar2 == 0) {
          if (DAT_000332b0 != '\0') {
            return 0;
          }
          cVar1 = FUN_000140e0();
          if (cVar1 == '\0') {
            return 0;
          }
          iVar2 = *(int *)(iVar4 + 0x28);
          if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("b","src/csplit.c",0x26a,"find_line");
          }
        }
        uVar5 = *(uint *)(iVar2 + 8);
        uVar3 = *(uint *)(iVar2 + 0xc);
        iVar4 = iVar2;
      } while( true );
    }
  }
  return 0;
}

