
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int term_data_untrusted(Terminal *term,char *data,int len)

{
  char *data_00;
  int is_stderr;
  byte *pbVar1;
  byte *data_01;
  int len_00;
  int in_stack_ffffffd4;
  
  if (0 < len) {
    pbVar1 = (byte *)(data + len);
    do {
      while (*data == 10) {
        len_00 = 2;
        data_01 = (byte *)0x7c38b;
LAB_00045d19:
        bufchain_add(&term->inbuf,data_01,len_00);
        if (term->in_term_out != 0) goto LAB_00045d00;
        data = (char *)((byte *)data + 1);
        term_data(term,is_stderr,data_00,in_stack_ffffffd4);
        if ((byte *)data == pbVar1) {
          return 0;
        }
      }
      if ((*data & 0x60U) != 0) {
        len_00 = 1;
        data_01 = (byte *)data;
        goto LAB_00045d19;
      }
LAB_00045d00:
      data = (char *)((byte *)data + 1);
    } while ((byte *)data != pbVar1);
  }
  return 0;
}



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

undefined4 FUN_00045cc0(int param_1,byte *param_2,int param_3)

{
  byte *pbVar1;
  byte *pbVar2;
  undefined4 uVar3;
  
  if (0 < param_3) {
    pbVar1 = param_2 + param_3;
    do {
      while (*param_2 == 10) {
        uVar3 = 2;
        pbVar2 = (byte *)0x7c38b;
LAB_00045d19:
        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);
        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;
        param_2 = param_2 + 1;
        FUN_00044a40();
        if (param_2 == pbVar1) {
          return 0;
        }
      }
      if ((*param_2 & 0x60) != 0) {
        uVar3 = 1;
        pbVar2 = param_2;
        goto LAB_00045d19;
      }
LAB_00045d00:
      param_2 = param_2 + 1;
    } while (param_2 != pbVar1);
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001b410
ADD EBX,0x6aadb
SUB ESP,0x1c
MOV ESI,dword ptr [ESP + 0x38]
MOV EDI,dword ptr [ESP + 0x30]
TEST ESI,ESI
JLE 0x00045d3d
LEA EAX,[EDI + 0x60]
MOV EBP,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EBX + 0xfffcbbe7]
ADD ESI,EBP
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00045d07
ADD EBP,0x1
CMP EBP,ESI
JZ 0x00045d3d
MOVZX EAX,byte ptr [EBP]
CMP AL,0xa
JZ 0x00045d50
TEST AL,0x60
JZ 0x00045d00
SUB ESP,0x4
PUSH 0x1
PUSH EBP
PUSH dword ptr [ESP + 0x14]
CALL 0x0002d430
MOV EAX,dword ptr [EDI + 0x1098]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00045d00
MOV EAX,EDI
ADD EBP,0x1
CALL 0x00044a40
CMP EBP,ESI
JNZ 0x00045d07
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
PUSH 0x2
PUSH dword ptr [ESP + 0x14]
JMP 0x00045d19
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00045cc0(int param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_00045cc0(int param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00045cc0(int param_1,byte *param_2,int param_3)" identifier (parameter_list "(int param_1,byte *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (if_statement "if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }" { (expression_statement "pbVar1 = param_2 + param_3;" (assignment_expression "pbVar1 = param_2 + param_3" identifier = (binary_expression "param_2 + param_3" identifier + identifier)) ;) (do_statement "do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);" do (compound_statement "{\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    }" { (while_statement "while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }" while (parenthesized_expression "(*param_2 == 10)" ( (binary_expression "*param_2 == 10" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }" { (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" identifier = number_literal) ;) (expression_statement "pbVar2 = (byte *)0x7c38b;" (assignment_expression "pbVar2 = (byte *)0x7c38b" identifier = (cast_expression "(byte *)0x7c38b" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);" statement_identifier : (expression_statement "FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);" (call_expression "FUN_0002d430(param_1 + 0x60,pbVar2,uVar3)" identifier (argument_list "(param_1 + 0x60,pbVar2,uVar3)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) , identifier , identifier ))) ;)) (if_statement "if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;" if (parenthesized_expression "(*(int *)(param_1 + 0x1098) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1098) != 0" (pointer_expression "*(int *)(param_1 + 0x1098)" * (cast_expression "(int *)(param_1 + 0x1098)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1098)" ( (binary_expression "param_1 + 0x1098" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00045d00;" goto statement_identifier ;)) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00044a40();" (call_expression "FUN_00044a40()" identifier (argument_list "()" ( ))) ;) (if_statement "if (param_2 == pbVar1) {\n          return 0;\n        }" if (parenthesized_expression "(param_2 == pbVar1)" ( (binary_expression "param_2 == pbVar1" identifier == identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }" if (parenthesized_expression "((*param_2 & 0x60) != 0)" ( (binary_expression "(*param_2 & 0x60) != 0" (parenthesized_expression "(*param_2 & 0x60)" ( (binary_expression "*param_2 & 0x60" (pointer_expression "*param_2" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (goto_statement "goto LAB_00045d19;" goto statement_identifier ;) })) (labeled_statement "LAB_00045d00:\n      param_2 = param_2 + 1;" statement_identifier : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(param_2 != pbVar1)" ( (binary_expression "param_2 != pbVar1" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint term_data_untrusted(Terminal *term,char *data,int len)\n\n{\n  char *data_00;\n  int is_stderr;\n  byte *pbVar1;\n  byte *data_01;\n  int len_00;\n  int in_stack_ffffffd4;\n  \n  if (0 < len) {\n    pbVar1 = (byte *)(data + len);\n    do {\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    } while ((byte *)data != pbVar1);\n  }\n  return 0;\n}\n\n" comment comment comment (function_definition "int term_data_untrusted(Terminal *term,char *data,int len)\n\n{\n  char *data_00;\n  int is_stderr;\n  byte *pbVar1;\n  byte *data_01;\n  int len_00;\n  int in_stack_ffffffd4;\n  \n  if (0 < len) {\n    pbVar1 = (byte *)(data + len);\n    do {\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    } while ((byte *)data != pbVar1);\n  }\n  return 0;\n}" primitive_type (function_declarator "term_data_untrusted(Terminal *term,char *data,int len)" identifier (parameter_list "(Terminal *term,char *data,int len)" ( (parameter_declaration "Terminal *term" type_identifier (pointer_declarator "*term" * identifier)) , (parameter_declaration "char *data" primitive_type (pointer_declarator "*data" * identifier)) , (parameter_declaration "int len" primitive_type identifier) ))) (compound_statement "{\n  char *data_00;\n  int is_stderr;\n  byte *pbVar1;\n  byte *data_01;\n  int len_00;\n  int in_stack_ffffffd4;\n  \n  if (0 < len) {\n    pbVar1 = (byte *)(data + len);\n    do {\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    } while ((byte *)data != pbVar1);\n  }\n  return 0;\n}" { (declaration "char *data_00;" primitive_type (pointer_declarator "*data_00" * identifier) ;) (declaration "int is_stderr;" primitive_type identifier ;) (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte *data_01;" type_identifier (pointer_declarator "*data_01" * identifier) ;) (declaration "int len_00;" primitive_type identifier ;) (declaration "int in_stack_ffffffd4;" primitive_type identifier ;) (if_statement "if (0 < len) {\n    pbVar1 = (byte *)(data + len);\n    do {\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    } while ((byte *)data != pbVar1);\n  }" if (parenthesized_expression "(0 < len)" ( (binary_expression "0 < len" number_literal < identifier) )) (compound_statement "{\n    pbVar1 = (byte *)(data + len);\n    do {\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    } while ((byte *)data != pbVar1);\n  }" { (expression_statement "pbVar1 = (byte *)(data + len);" (assignment_expression "pbVar1 = (byte *)(data + len)" identifier = (cast_expression "(byte *)(data + len)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(data + len)" ( (binary_expression "data + len" identifier + identifier) )))) ;) (do_statement "do {\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    } while ((byte *)data != pbVar1);" do (compound_statement "{\n      while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      data = (char *)((byte *)data + 1);\n    }" { (while_statement "while (*data == 10) {\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }" while (parenthesized_expression "(*data == 10)" ( (binary_expression "*data == 10" (pointer_expression "*data" * identifier) == number_literal) )) (compound_statement "{\n        len_00 = 2;\n        data_01 = (byte *)0x7c38b;\nLAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);\n        if (term->in_term_out != 0) goto LAB_00045d00;\n        data = (char *)((byte *)data + 1);\n        term_data(term,is_stderr,data_00,in_stack_ffffffd4);\n        if ((byte *)data == pbVar1) {\n          return 0;\n        }\n      }" { (expression_statement "len_00 = 2;" (assignment_expression "len_00 = 2" identifier = number_literal) ;) (expression_statement "data_01 = (byte *)0x7c38b;" (assignment_expression "data_01 = (byte *)0x7c38b" identifier = (cast_expression "(byte *)0x7c38b" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00045d19:\n        bufchain_add(&term->inbuf,data_01,len_00);" statement_identifier : (expression_statement "bufchain_add(&term->inbuf,data_01,len_00);" (call_expression "bufchain_add(&term->inbuf,data_01,len_00)" identifier (argument_list "(&term->inbuf,data_01,len_00)" ( (pointer_expression "&term->inbuf" & (field_expression "term->inbuf" identifier -> field_identifier)) , identifier , identifier ))) ;)) (if_statement "if (term->in_term_out != 0) goto LAB_00045d00;" if (parenthesized_expression "(term->in_term_out != 0)" ( (binary_expression "term->in_term_out != 0" (field_expression "term->in_term_out" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00045d00;" goto statement_identifier ;)) (expression_statement "data = (char *)((byte *)data + 1);" (assignment_expression "data = (char *)((byte *)data + 1)" identifier = (cast_expression "(char *)((byte *)data + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)data + 1)" ( (binary_expression "(byte *)data + 1" (cast_expression "(byte *)data" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "term_data(term,is_stderr,data_00,in_stack_ffffffd4);" (call_expression "term_data(term,is_stderr,data_00,in_stack_ffffffd4)" identifier (argument_list "(term,is_stderr,data_00,in_stack_ffffffd4)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if ((byte *)data == pbVar1) {\n          return 0;\n        }" if (parenthesized_expression "((byte *)data == pbVar1)" ( (binary_expression "(byte *)data == pbVar1" (cast_expression "(byte *)data" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if ((*data & 0x60U) != 0) {\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }" if (parenthesized_expression "((*data & 0x60U) != 0)" ( (binary_expression "(*data & 0x60U) != 0" (parenthesized_expression "(*data & 0x60U)" ( (binary_expression "*data & 0x60U" (pointer_expression "*data" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        len_00 = 1;\n        data_01 = (byte *)data;\n        goto LAB_00045d19;\n      }" { (expression_statement "len_00 = 1;" (assignment_expression "len_00 = 1" identifier = number_literal) ;) (expression_statement "data_01 = (byte *)data;" (assignment_expression "data_01 = (byte *)data" identifier = (cast_expression "(byte *)data" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00045d19;" goto statement_identifier ;) })) (labeled_statement "LAB_00045d00:\n      data = (char *)((byte *)data + 1);" statement_identifier : (expression_statement "data = (char *)((byte *)data + 1);" (assignment_expression "data = (char *)((byte *)data + 1)" identifier = (cast_expression "(char *)((byte *)data + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)data + 1)" ( (binary_expression "(byte *)data + 1" (cast_expression "(byte *)data" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;)) }) while (parenthesized_expression "((byte *)data != pbVar1)" ( (binary_expression "(byte *)data != pbVar1" (cast_expression "(byte *)data" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00045cc0(int param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_00045cc0(int param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00045cc0(int param_1,byte *param_2,int param_3)" identifier (parameter_list "(int param_1,byte *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (if_statement "if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }" { (expression_statement "pbVar1 = param_2 + param_3;" (assignment_expression "pbVar1 = param_2 + param_3" identifier = (binary_expression "param_2 + param_3" identifier + identifier)) ;) (do_statement "do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);" do (compound_statement "{\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    }" { (while_statement "while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }" while (parenthesized_expression "(*param_2 == 10)" ( (binary_expression "*param_2 == 10" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }" { (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" identifier = number_literal) ;) (expression_statement "pbVar2 = (byte *)0x7c38b;" (assignment_expression "pbVar2 = (byte *)0x7c38b" identifier = (cast_expression "(byte *)0x7c38b" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);" statement_identifier : (expression_statement "FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);" (call_expression "FUN_0002d430(param_1 + 0x60,pbVar2,uVar3)" identifier (argument_list "(param_1 + 0x60,pbVar2,uVar3)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) , identifier , identifier ))) ;)) (if_statement "if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;" if (parenthesized_expression "(*(int *)(param_1 + 0x1098) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1098) != 0" (pointer_expression "*(int *)(param_1 + 0x1098)" * (cast_expression "(int *)(param_1 + 0x1098)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1098)" ( (binary_expression "param_1 + 0x1098" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00045d00;" goto statement_identifier ;)) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00044a40();" (call_expression "FUN_00044a40()" identifier (argument_list "()" ( ))) ;) (if_statement "if (param_2 == pbVar1) {\n          return 0;\n        }" if (parenthesized_expression "(param_2 == pbVar1)" ( (binary_expression "param_2 == pbVar1" identifier == identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }" if (parenthesized_expression "((*param_2 & 0x60) != 0)" ( (binary_expression "(*param_2 & 0x60) != 0" (parenthesized_expression "(*param_2 & 0x60)" ( (binary_expression "*param_2 & 0x60" (pointer_expression "*param_2" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (goto_statement "goto LAB_00045d19;" goto statement_identifier ;) })) (labeled_statement "LAB_00045d00:\n      param_2 = param_2 + 1;" statement_identifier : (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(param_2 != pbVar1)" ( (binary_expression "param_2 != pbVar1" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00045cc0(int param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_00045cc0(int param_1,byte *param_2,int param_3)" (identifier "FUN_00045cc0") (parameter_list "(int param_1,byte *param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  byte *pbVar2;\n  undefined4 uVar3;\n  \n  if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }\n  return 0;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (if_statement "if (0 < param_3) {\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    pbVar1 = param_2 + param_3;\n    do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);\n  }" ({ "{") (expression_statement "pbVar1 = param_2 + param_3;" (assignment_expression "pbVar1 = param_2 + param_3" (identifier "pbVar1") (= "=") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3"))) (; ";")) (do_statement "do {\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    } while (param_2 != pbVar1);" (do "do") (compound_statement "{\n      while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }\n      if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }\nLAB_00045d00:\n      param_2 = param_2 + 1;\n    }" ({ "{") (while_statement "while (*param_2 == 10) {\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }" (while "while") (parenthesized_expression "(*param_2 == 10)" (( "(") (binary_expression "*param_2 == 10" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "10")) () ")")) (compound_statement "{\n        uVar3 = 2;\n        pbVar2 = (byte *)0x7c38b;\nLAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);\n        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;\n        param_2 = param_2 + 1;\n        FUN_00044a40();\n        if (param_2 == pbVar1) {\n          return 0;\n        }\n      }" ({ "{") (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" (identifier "uVar3") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar2 = (byte *)0x7c38b;" (assignment_expression "pbVar2 = (byte *)0x7c38b" (identifier "pbVar2") (= "=") (cast_expression "(byte *)0x7c38b" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7c38b"))) (; ";")) (labeled_statement "LAB_00045d19:\n        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);" (statement_identifier "LAB_00045d19") (: ":") (expression_statement "FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);" (call_expression "FUN_0002d430(param_1 + 0x60,pbVar2,uVar3)" (identifier "FUN_0002d430") (argument_list "(param_1 + 0x60,pbVar2,uVar3)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) (, ",") (identifier "pbVar2") (, ",") (identifier "uVar3") () ")"))) (; ";"))) (if_statement "if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1098) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1098) != 0" (pointer_expression "*(int *)(param_1 + 0x1098)" (* "*") (cast_expression "(int *)(param_1 + 0x1098)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1098)" (( "(") (binary_expression "param_1 + 0x1098" (identifier "param_1") (+ "+") (number_literal "0x1098")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00045d00;" (goto "goto") (statement_identifier "LAB_00045d00") (; ";"))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00044a40();" (call_expression "FUN_00044a40()" (identifier "FUN_00044a40") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (param_2 == pbVar1) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(param_2 == pbVar1)" (( "(") (binary_expression "param_2 == pbVar1" (identifier "param_2") (== "==") (identifier "pbVar1")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((*param_2 & 0x60) != 0) {\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }" (if "if") (parenthesized_expression "((*param_2 & 0x60) != 0)" (( "(") (binary_expression "(*param_2 & 0x60) != 0" (parenthesized_expression "(*param_2 & 0x60)" (( "(") (binary_expression "*param_2 & 0x60" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = 1;\n        pbVar2 = param_2;\n        goto LAB_00045d19;\n      }" ({ "{") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" (identifier "pbVar2") (= "=") (identifier "param_2")) (; ";")) (goto_statement "goto LAB_00045d19;" (goto "goto") (statement_identifier "LAB_00045d19") (; ";")) (} "}"))) (labeled_statement "LAB_00045d00:\n      param_2 = param_2 + 1;" (statement_identifier "LAB_00045d00") (: ":") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(param_2 != pbVar1)" (( "(") (binary_expression "param_2 != pbVar1" (identifier "param_2") (!= "!=") (identifier "pbVar1")) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int function_1(type_1 *term,char *var_2,int var_1)

{
  char *data_00;
  int is_stderr;
  type_2 *var_5;
  type_2 *data_01;
  int len_00;
  int in_stack_ffffffd4;
  
  if (0 < var_1) {
    var_5 = (type_2 *)(var_2 + var_1);
    do {
      while (*var_2 == 10) {
        len_00 = 2;
        data_01 = (type_2 *)0x7c38b;
LAB_00045d19:
        var_3(&term->inbuf,data_01,len_00);
        if (term->in_term_out != 0) goto LAB_00045d00;
        var_2 = (char *)((type_2 *)var_2 + 1);
        var_4(term,is_stderr,data_00,in_stack_ffffffd4);
        if ((type_2 *)var_2 == var_5) {
          return 0;
        }
      }
      if ((*var_2 & 0x60U) != 0) {
        len_00 = 1;
        data_01 = (type_2 *)var_2;
        goto LAB_00045d19;
      }
LAB_00045d00:
      var_2 = (char *)((type_2 *)var_2 + 1);
    } while ((type_2 *)var_2 != var_5);
  }
  return 0;
}


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

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

undefined4 MASKED(int param_1,byte *param_2,int param_3)

{
  byte *pbVar1;
  byte *pbVar2;
  undefined4 uVar3;
  
  if (0 < param_3) {
    pbVar1 = param_2 + param_3;
    do {
      while (*param_2 == 10) {
        uVar3 = 2;
        pbVar2 = (byte *)0x7c38b;
LAB_00045d19:
        FUN_0002d430(param_1 + 0x60,pbVar2,uVar3);
        if (*(int *)(param_1 + 0x1098) != 0) goto LAB_00045d00;
        param_2 = param_2 + 1;
        FUN_00044a40();
        if (param_2 == pbVar1) {
          return 0;
        }
      }
      if ((*param_2 & 0x60) != 0) {
        uVar3 = 1;
        pbVar2 = param_2;
        goto LAB_00045d19;
      }
LAB_00045d00:
      param_2 = param_2 + 1;
    } while (param_2 != pbVar1);
  }
  return 0;
}

