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

void parse_knr_dcl(Ident *ident)

{
  int iVar1;
  int iVar2;
  
  ident->type_end = -1;
  ident->parmcnt = -1;
  iVar2 = curs;
  iVar1 = strict_ansi;
  ident->name = (char *)0x0;
  if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    putback();
  }
  curs = iVar2 + -1;
  if (curs < 1) {
    tok.type = 0;
  }
  else {
    tok.type = token_stack[iVar2 + -2].type;
    tok.token = token_stack[iVar2 + -2].token;
    tok.line = token_stack[iVar2 + -2].line;
  }
  debugtoken(&tok,"putback");
  dcl(ident);
  start_pos[0] = curs;
  if (1 < debug) {
    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);
  }
  save_end = curs + -1;
  if (ident->name != (char *)0x0) {
    declare(ident,(uint)(iVar1 == 0));
    return;
  }
  save_end = -1;
  return;
}



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

void FUN_0001cad0(int *param_1)

{
  int iVar1;
  int iVar2;
  
  param_1[1] = -1;
  param_1[2] = -1;
  iVar2 = DAT_0003bc14;
  iVar1 = DAT_0003bb2c;
  *param_1 = 0;
  if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_000189e0();
  }
  DAT_0003bc14 = iVar2 + -1;
  if (DAT_0003bc14 < 1) {
    DAT_0003bbc0 = 0;
  }
  else {
    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;
    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);
    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);
    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);
  }
  FUN_00018a20(&DAT_0003bbc0,"putback");
  FUN_0001bd50(param_1);
  DAT_0003ba14 = DAT_0003bc14;
  if (1 < DAT_0003baf4) {
    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);
  }
  DAT_0003ba10 = DAT_0003bc14 + -1;
  if (*param_1 != 0) {
    FUN_0001c6a0(param_1,iVar1 == 0);
    return;
  }
  DAT_0003ba10 = 0xffffffff;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00012830
ADD EBX,0x1e397
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [ESI + 0x4],0xffffffff
LEA EAX,[EBX + 0xcbc]
LEA EBP,[EBX + 0xda4]
MOV dword ptr [ESI + 0x8],0xffffffff
MOV EDI,dword ptr [EAX]
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESI],0x0
TEST EAX,EAX
JZ 0x0001cbe3
SUB EAX,0x1
LEA EDX,[EBX + 0xd50]
MOV dword ptr [EBP],EAX
TEST EAX,EAX
JLE 0x0001cbd8
LEA ECX,[EBX + 0xd60]
LEA EAX,[EAX + EAX*0x2]
SHL EAX,0x2
ADD EAX,dword ptr [ECX]
LEA ECX,[EAX + -0xc]
MOV EAX,dword ptr [EAX + -0xc]
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [ECX + 0x4]
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,dword ptr [ECX + 0x8]
MOV dword ptr [EDX + 0x8],EAX
SUB ESP,0x8
LEA EAX,[EBX + 0xffff5cfc]
PUSH EAX
PUSH EDX
CALL 0x00018a20
MOV dword ptr [ESP],ESI
CALL 0x0001bd50
LEA EDX,[EBX + 0xc84]
MOV EAX,dword ptr [EBP]
ADD ESP,0x10
CMP dword ptr [EDX],0x1
MOV dword ptr [EBX + 0xba4],EAX
JLE 0x0001cb95
PUSH EAX
LEA EAX,[EBX + 0xffff5cc0]
PUSH EAX
MOV EAX,dword ptr [EBX + 0x134]
PUSH 0x1
PUSH dword ptr [EAX]
CALL 0x000123f0
MOV EAX,dword ptr [EBP]
ADD ESP,0x10
SUB EAX,0x1
MOV dword ptr [EBX + 0xba0],EAX
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x0001cbc0
SUB ESP,0x8
XOR EAX,EAX
TEST EDI,EDI
SETZ AL
PUSH EAX
PUSH ESI
CALL 0x0001c6a0
ADD ESP,0x10
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EBX + 0xba0],0xffffffff
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EDX],0x0
JMP 0x0001cb49
CALL 0x000189e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0001cad0(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}\n\n" comment (function_definition "void FUN_0001cad0(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}" primitive_type (function_declarator "FUN_0001cad0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "param_1[1] = -1;" (assignment_expression "param_1[1] = -1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = -1;" (assignment_expression "param_1[2] = -1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar2 = DAT_0003bc14;" (assignment_expression "iVar2 = DAT_0003bc14" identifier = identifier) ;) (expression_statement "iVar1 = DAT_0003bb2c;" (assignment_expression "iVar1 = DAT_0003bb2c" identifier = identifier) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (if_statement "if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000189e0();\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000189e0();\n  }" { comment (expression_statement "FUN_000189e0();" (call_expression "FUN_000189e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_0003bc14 = iVar2 + -1;" (assignment_expression "DAT_0003bc14 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" if (parenthesized_expression "(DAT_0003bc14 < 1)" ( (binary_expression "DAT_0003bc14 < 1" identifier < number_literal) )) (compound_statement "{\n    DAT_0003bbc0 = 0;\n  }" { (expression_statement "DAT_0003bbc0 = 0;" (assignment_expression "DAT_0003bbc0 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" else (compound_statement "{\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" { (expression_statement "iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;" (assignment_expression "iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0" identifier = (binary_expression "DAT_0003bc14 * 0xc + DAT_0003bbd0" (binary_expression "DAT_0003bc14 * 0xc" identifier * number_literal) + identifier)) ;) (expression_statement "DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);" (assignment_expression "DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -0xc)" * (cast_expression "(undefined4 *)(iVar2 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);" (assignment_expression "DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -8)" * (cast_expression "(undefined4 *)(iVar2 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -8)" ( (binary_expression "iVar2 + -8" identifier + number_literal) ))))) ;) (expression_statement "DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);" (assignment_expression "DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -4)" * (cast_expression "(undefined4 *)(iVar2 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -4)" ( (binary_expression "iVar2 + -4" identifier + number_literal) ))))) ;) }))) (expression_statement "FUN_00018a20(&DAT_0003bbc0,"putback");" (call_expression "FUN_00018a20(&DAT_0003bbc0,"putback")" identifier (argument_list "(&DAT_0003bbc0,"putback")" ( (pointer_expression "&DAT_0003bbc0" & identifier) , (string_literal ""putback"" " string_content ") ))) ;) (expression_statement "FUN_0001bd50(param_1);" (call_expression "FUN_0001bd50(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "DAT_0003ba14 = DAT_0003bc14;" (assignment_expression "DAT_0003ba14 = DAT_0003bc14" identifier = identifier) ;) (if_statement "if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }" if (parenthesized_expression "(1 < DAT_0003baf4)" ( (binary_expression "1 < DAT_0003baf4" number_literal < identifier) )) (compound_statement "{\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }" { (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14)" identifier (argument_list "(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14)" ( (pointer_expression "*(undefined4 *)PTR_stderr_0003afa4" * (cast_expression "(undefined4 *)PTR_stderr_0003afa4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (string_literal ""marking stack at %d\n"" " string_content escape_sequence ") , identifier ))) ;) })) (expression_statement "DAT_0003ba10 = DAT_0003bc14 + -1;" (assignment_expression "DAT_0003ba10 = DAT_0003bc14 + -1" identifier = (binary_expression "DAT_0003bc14 + -1" identifier + number_literal)) ;) (if_statement "if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }" { (expression_statement "FUN_0001c6a0(param_1,iVar1 == 0);" (call_expression "FUN_0001c6a0(param_1,iVar1 == 0)" identifier (argument_list "(param_1,iVar1 == 0)" ( identifier , (binary_expression "iVar1 == 0" identifier == number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "DAT_0003ba10 = 0xffffffff;" (assignment_expression "DAT_0003ba10 = 0xffffffff" identifier = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid parse_knr_dcl(Ident *ident)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  ident->type_end = -1;\n  ident->parmcnt = -1;\n  iVar2 = curs;\n  iVar1 = strict_ansi;\n  ident->name = (char *)0x0;\n  if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    putback();\n  }\n  curs = iVar2 + -1;\n  if (curs < 1) {\n    tok.type = 0;\n  }\n  else {\n    tok.type = token_stack[iVar2 + -2].type;\n    tok.token = token_stack[iVar2 + -2].token;\n    tok.line = token_stack[iVar2 + -2].line;\n  }\n  debugtoken(&tok,"putback");\n  dcl(ident);\n  start_pos[0] = curs;\n  if (1 < debug) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);\n  }\n  save_end = curs + -1;\n  if (ident->name != (char *)0x0) {\n    declare(ident,(uint)(iVar1 == 0));\n    return;\n  }\n  save_end = -1;\n  return;\n}\n\n" comment comment (function_definition "void parse_knr_dcl(Ident *ident)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  ident->type_end = -1;\n  ident->parmcnt = -1;\n  iVar2 = curs;\n  iVar1 = strict_ansi;\n  ident->name = (char *)0x0;\n  if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    putback();\n  }\n  curs = iVar2 + -1;\n  if (curs < 1) {\n    tok.type = 0;\n  }\n  else {\n    tok.type = token_stack[iVar2 + -2].type;\n    tok.token = token_stack[iVar2 + -2].token;\n    tok.line = token_stack[iVar2 + -2].line;\n  }\n  debugtoken(&tok,"putback");\n  dcl(ident);\n  start_pos[0] = curs;\n  if (1 < debug) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);\n  }\n  save_end = curs + -1;\n  if (ident->name != (char *)0x0) {\n    declare(ident,(uint)(iVar1 == 0));\n    return;\n  }\n  save_end = -1;\n  return;\n}" primitive_type (function_declarator "parse_knr_dcl(Ident *ident)" identifier (parameter_list "(Ident *ident)" ( (parameter_declaration "Ident *ident" type_identifier (pointer_declarator "*ident" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  ident->type_end = -1;\n  ident->parmcnt = -1;\n  iVar2 = curs;\n  iVar1 = strict_ansi;\n  ident->name = (char *)0x0;\n  if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    putback();\n  }\n  curs = iVar2 + -1;\n  if (curs < 1) {\n    tok.type = 0;\n  }\n  else {\n    tok.type = token_stack[iVar2 + -2].type;\n    tok.token = token_stack[iVar2 + -2].token;\n    tok.line = token_stack[iVar2 + -2].line;\n  }\n  debugtoken(&tok,"putback");\n  dcl(ident);\n  start_pos[0] = curs;\n  if (1 < debug) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);\n  }\n  save_end = curs + -1;\n  if (ident->name != (char *)0x0) {\n    declare(ident,(uint)(iVar1 == 0));\n    return;\n  }\n  save_end = -1;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "ident->type_end = -1;" (assignment_expression "ident->type_end = -1" (field_expression "ident->type_end" identifier -> field_identifier) = number_literal) ;) (expression_statement "ident->parmcnt = -1;" (assignment_expression "ident->parmcnt = -1" (field_expression "ident->parmcnt" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar2 = curs;" (assignment_expression "iVar2 = curs" identifier = identifier) ;) (expression_statement "iVar1 = strict_ansi;" (assignment_expression "iVar1 = strict_ansi" identifier = identifier) ;) (expression_statement "ident->name = (char *)0x0;" (assignment_expression "ident->name = (char *)0x0" (field_expression "ident->name" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    putback();\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    putback();\n  }" { comment (expression_statement "putback();" (call_expression "putback()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "curs = iVar2 + -1;" (assignment_expression "curs = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (curs < 1) {\n    tok.type = 0;\n  }\n  else {\n    tok.type = token_stack[iVar2 + -2].type;\n    tok.token = token_stack[iVar2 + -2].token;\n    tok.line = token_stack[iVar2 + -2].line;\n  }" if (parenthesized_expression "(curs < 1)" ( (binary_expression "curs < 1" identifier < number_literal) )) (compound_statement "{\n    tok.type = 0;\n  }" { (expression_statement "tok.type = 0;" (assignment_expression "tok.type = 0" (field_expression "tok.type" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n    tok.type = token_stack[iVar2 + -2].type;\n    tok.token = token_stack[iVar2 + -2].token;\n    tok.line = token_stack[iVar2 + -2].line;\n  }" else (compound_statement "{\n    tok.type = token_stack[iVar2 + -2].type;\n    tok.token = token_stack[iVar2 + -2].token;\n    tok.line = token_stack[iVar2 + -2].line;\n  }" { (expression_statement "tok.type = token_stack[iVar2 + -2].type;" (assignment_expression "tok.type = token_stack[iVar2 + -2].type" (field_expression "tok.type" identifier . field_identifier) = (field_expression "token_stack[iVar2 + -2].type" (subscript_expression "token_stack[iVar2 + -2]" identifier [ (binary_expression "iVar2 + -2" identifier + number_literal) ]) . field_identifier)) ;) (expression_statement "tok.token = token_stack[iVar2 + -2].token;" (assignment_expression "tok.token = token_stack[iVar2 + -2].token" (field_expression "tok.token" identifier . field_identifier) = (field_expression "token_stack[iVar2 + -2].token" (subscript_expression "token_stack[iVar2 + -2]" identifier [ (binary_expression "iVar2 + -2" identifier + number_literal) ]) . field_identifier)) ;) (expression_statement "tok.line = token_stack[iVar2 + -2].line;" (assignment_expression "tok.line = token_stack[iVar2 + -2].line" (field_expression "tok.line" identifier . field_identifier) = (field_expression "token_stack[iVar2 + -2].line" (subscript_expression "token_stack[iVar2 + -2]" identifier [ (binary_expression "iVar2 + -2" identifier + number_literal) ]) . field_identifier)) ;) }))) (expression_statement "debugtoken(&tok,"putback");" (call_expression "debugtoken(&tok,"putback")" identifier (argument_list "(&tok,"putback")" ( (pointer_expression "&tok" & identifier) , (string_literal ""putback"" " string_content ") ))) ;) (expression_statement "dcl(ident);" (call_expression "dcl(ident)" identifier (argument_list "(ident)" ( identifier ))) ;) (expression_statement "start_pos[0] = curs;" (assignment_expression "start_pos[0] = curs" (subscript_expression "start_pos[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (1 < debug) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);\n  }" if (parenthesized_expression "(1 < debug)" ( (binary_expression "1 < debug" number_literal < identifier) )) (compound_statement "{\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);\n  }" { (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs)" identifier (argument_list "(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",curs)" ( (pointer_expression "*(undefined4 *)PTR_stderr_0003afa4" * (cast_expression "(undefined4 *)PTR_stderr_0003afa4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (string_literal ""marking stack at %d\n"" " string_content escape_sequence ") , identifier ))) ;) })) (expression_statement "save_end = curs + -1;" (assignment_expression "save_end = curs + -1" identifier = (binary_expression "curs + -1" identifier + number_literal)) ;) (if_statement "if (ident->name != (char *)0x0) {\n    declare(ident,(uint)(iVar1 == 0));\n    return;\n  }" if (parenthesized_expression "(ident->name != (char *)0x0)" ( (binary_expression "ident->name != (char *)0x0" (field_expression "ident->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    declare(ident,(uint)(iVar1 == 0));\n    return;\n  }" { (expression_statement "declare(ident,(uint)(iVar1 == 0));" (call_expression "declare(ident,(uint)(iVar1 == 0))" identifier (argument_list "(ident,(uint)(iVar1 == 0))" ( identifier , (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) ))) ))) ;) (return_statement "return;" return ;) })) (expression_statement "save_end = -1;" (assignment_expression "save_end = -1" identifier = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0001cad0(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}\n\n" (function_definition "void FUN_0001cad0(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}" primitive_type (function_declarator "FUN_0001cad0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "param_1[1] = -1;" (assignment_expression "param_1[1] = -1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = -1;" (assignment_expression "param_1[2] = -1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar2 = DAT_0003bc14;" (assignment_expression "iVar2 = DAT_0003bc14" identifier = identifier) ;) (expression_statement "iVar1 = DAT_0003bb2c;" (assignment_expression "iVar1 = DAT_0003bb2c" identifier = identifier) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (if_statement "if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_000189e0();\n  }" { (expression_statement "FUN_000189e0();" (call_expression "FUN_000189e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_0003bc14 = iVar2 + -1;" (assignment_expression "DAT_0003bc14 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (if_statement "if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" if (parenthesized_expression "(DAT_0003bc14 < 1)" ( (binary_expression "DAT_0003bc14 < 1" identifier < number_literal) )) (compound_statement "{\n    DAT_0003bbc0 = 0;\n  }" { (expression_statement "DAT_0003bbc0 = 0;" (assignment_expression "DAT_0003bbc0 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" else (compound_statement "{\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" { (expression_statement "iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;" (assignment_expression "iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0" identifier = (binary_expression "DAT_0003bc14 * 0xc + DAT_0003bbd0" (binary_expression "DAT_0003bc14 * 0xc" identifier * number_literal) + identifier)) ;) (expression_statement "DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);" (assignment_expression "DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -0xc)" * (cast_expression "(undefined4 *)(iVar2 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);" (assignment_expression "DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -8)" * (cast_expression "(undefined4 *)(iVar2 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -8)" ( (binary_expression "iVar2 + -8" identifier + number_literal) ))))) ;) (expression_statement "DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);" (assignment_expression "DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -4)" * (cast_expression "(undefined4 *)(iVar2 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -4)" ( (binary_expression "iVar2 + -4" identifier + number_literal) ))))) ;) }))) (expression_statement "FUN_00018a20(&DAT_0003bbc0,"putback");" (call_expression "FUN_00018a20(&DAT_0003bbc0,"putback")" identifier (argument_list "(&DAT_0003bbc0,"putback")" ( (pointer_expression "&DAT_0003bbc0" & identifier) , (string_literal ""putback"" " string_content ") ))) ;) (expression_statement "FUN_0001bd50(param_1);" (call_expression "FUN_0001bd50(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "DAT_0003ba14 = DAT_0003bc14;" (assignment_expression "DAT_0003ba14 = DAT_0003bc14" identifier = identifier) ;) (if_statement "if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }" if (parenthesized_expression "(1 < DAT_0003baf4)" ( (binary_expression "1 < DAT_0003baf4" number_literal < identifier) )) (compound_statement "{\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }" { (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14)" identifier (argument_list "(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14)" ( (pointer_expression "*(undefined4 *)PTR_stderr_0003afa4" * (cast_expression "(undefined4 *)PTR_stderr_0003afa4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (string_literal ""marking stack at %d\n"" " string_content escape_sequence ") , identifier ))) ;) })) (expression_statement "DAT_0003ba10 = DAT_0003bc14 + -1;" (assignment_expression "DAT_0003ba10 = DAT_0003bc14 + -1" identifier = (binary_expression "DAT_0003bc14 + -1" identifier + number_literal)) ;) (if_statement "if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }" { (expression_statement "FUN_0001c6a0(param_1,iVar1 == 0);" (call_expression "FUN_0001c6a0(param_1,iVar1 == 0)" identifier (argument_list "(param_1,iVar1 == 0)" ( identifier , (binary_expression "iVar1 == 0" identifier == number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "DAT_0003ba10 = 0xffffffff;" (assignment_expression "DAT_0003ba10 = 0xffffffff" identifier = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT == LIT) ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_0001cad0(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0001cad0(int *param_1)" (identifier "FUN_0001cad0") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  param_1[1] = -1;\n  param_1[2] = -1;\n  iVar2 = DAT_0003bc14;\n  iVar1 = DAT_0003bb2c;\n  *param_1 = 0;\n  if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }\n  DAT_0003bc14 = iVar2 + -1;\n  if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }\n  FUN_00018a20(&DAT_0003bbc0,"putback");\n  FUN_0001bd50(param_1);\n  DAT_0003ba14 = DAT_0003bc14;\n  if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }\n  DAT_0003ba10 = DAT_0003bc14 + -1;\n  if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }\n  DAT_0003ba10 = 0xffffffff;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (expression_statement "param_1[1] = -1;" (assignment_expression "param_1[1] = -1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "param_1[2] = -1;" (assignment_expression "param_1[2] = -1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar2 = DAT_0003bc14;" (assignment_expression "iVar2 = DAT_0003bc14" (identifier "iVar2") (= "=") (identifier "DAT_0003bc14")) (; ";")) (expression_statement "iVar1 = DAT_0003bb2c;" (assignment_expression "iVar1 = DAT_0003bb2c" (identifier "iVar1") (= "=") (identifier "DAT_0003bb2c")) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar2 == 0) {\n                    \n    FUN_000189e0();\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_000189e0();\n  }" ({ "{") (expression_statement "FUN_000189e0();" (call_expression "FUN_000189e0()" (identifier "FUN_000189e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_0003bc14 = iVar2 + -1;" (assignment_expression "DAT_0003bc14 = iVar2 + -1" (identifier "DAT_0003bc14") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (DAT_0003bc14 < 1) {\n    DAT_0003bbc0 = 0;\n  }\n  else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" (if "if") (parenthesized_expression "(DAT_0003bc14 < 1)" (( "(") (binary_expression "DAT_0003bc14 < 1" (identifier "DAT_0003bc14") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    DAT_0003bbc0 = 0;\n  }" ({ "{") (expression_statement "DAT_0003bbc0 = 0;" (assignment_expression "DAT_0003bbc0 = 0" (identifier "DAT_0003bbc0") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" (else "else") (compound_statement "{\n    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;\n    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);\n    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);\n    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);\n  }" ({ "{") (expression_statement "iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;" (assignment_expression "iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0" (identifier "iVar2") (= "=") (binary_expression "DAT_0003bc14 * 0xc + DAT_0003bbd0" (binary_expression "DAT_0003bc14 * 0xc" (identifier "DAT_0003bc14") (* "*") (number_literal "0xc")) (+ "+") (identifier "DAT_0003bbd0"))) (; ";")) (expression_statement "DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);" (assignment_expression "DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc)" (identifier "DAT_0003bbc0") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + -0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -0xc)" (( "(") (binary_expression "iVar2 + -0xc" (identifier "iVar2") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (expression_statement "DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);" (assignment_expression "DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8)" (identifier "DAT_0003bbc4") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + -8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -8)" (( "(") (binary_expression "iVar2 + -8" (identifier "iVar2") (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);" (assignment_expression "DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4)" (identifier "DAT_0003bbc8") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + -4)" (* "*") (cast_expression "(undefined4 *)(iVar2 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -4)" (( "(") (binary_expression "iVar2 + -4" (identifier "iVar2") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (} "}")))) (expression_statement "FUN_00018a20(&DAT_0003bbc0,"putback");" (call_expression "FUN_00018a20(&DAT_0003bbc0,"putback")" (identifier "FUN_00018a20") (argument_list "(&DAT_0003bbc0,"putback")" (( "(") (pointer_expression "&DAT_0003bbc0" (& "&") (identifier "DAT_0003bbc0")) (, ",") (string_literal ""putback"" (" """) (string_content "putback") (" """)) () ")"))) (; ";")) (expression_statement "FUN_0001bd50(param_1);" (call_expression "FUN_0001bd50(param_1)" (identifier "FUN_0001bd50") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "DAT_0003ba14 = DAT_0003bc14;" (assignment_expression "DAT_0003ba14 = DAT_0003bc14" (identifier "DAT_0003ba14") (= "=") (identifier "DAT_0003bc14")) (; ";")) (if_statement "if (1 < DAT_0003baf4) {\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }" (if "if") (parenthesized_expression "(1 < DAT_0003baf4)" (( "(") (binary_expression "1 < DAT_0003baf4" (number_literal "1") (< "<") (identifier "DAT_0003baf4")) () ")")) (compound_statement "{\n    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);\n  }" ({ "{") (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14)" (identifier "__fprintf_chk") (argument_list "(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14)" (( "(") (pointer_expression "*(undefined4 *)PTR_stderr_0003afa4" (* "*") (cast_expression "(undefined4 *)PTR_stderr_0003afa4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stderr_0003afa4"))) (, ",") (number_literal "1") (, ",") (string_literal ""marking stack at %d\n"" (" """) (string_content "marking stack at %d") (escape_sequence "\n") (" """)) (, ",") (identifier "DAT_0003bc14") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_0003ba10 = DAT_0003bc14 + -1;" (assignment_expression "DAT_0003ba10 = DAT_0003bc14 + -1" (identifier "DAT_0003ba10") (= "=") (binary_expression "DAT_0003bc14 + -1" (identifier "DAT_0003bc14") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*param_1 != 0) {\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0001c6a0(param_1,iVar1 == 0);\n    return;\n  }" ({ "{") (expression_statement "FUN_0001c6a0(param_1,iVar1 == 0);" (call_expression "FUN_0001c6a0(param_1,iVar1 == 0)" (identifier "FUN_0001c6a0") (argument_list "(param_1,iVar1 == 0)" (( "(") (identifier "param_1") (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "DAT_0003ba10 = 0xffffffff;" (assignment_expression "DAT_0003ba10 = 0xffffffff" (identifier "DAT_0003ba10") (= "=") (number_literal "0xffffffff")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(type_1 *ident)

{
  int var_9;
  int var_1;
  
  ident->type_end = -1;
  ident->parmcnt = -1;
  var_1 = var_3;
  var_9 = strict_ansi;
  ident->name = (char *)0x0;
  if (var_1 == 0) {
                    /* WARNING: Subroutine does not return */
    var_2();
  }
  var_3 = var_1 + -1;
  if (var_3 < 1) {
    tok.type = 0;
  }
  else {
    tok.type = token_stack[var_1 + -2].type;
    tok.token = token_stack[var_1 + -2].token;
    tok.line = token_stack[var_1 + -2].line;
  }
  var_4(&tok,"putback");
  var_5(ident);
  start_pos[0] = var_3;
  if (1 < var_6) {
    var_7(*(type_2 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",var_3);
  }
  save_end = var_3 + -1;
  if (ident->name != (char *)0x0) {
    var_8(ident,(uint)(var_9 == 0));
    return;
  }
  save_end = -1;
  return;
}


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

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

void MASKED(int *param_1)

{
  int iVar1;
  int iVar2;
  
  param_1[1] = -1;
  param_1[2] = -1;
  iVar2 = DAT_0003bc14;
  iVar1 = DAT_0003bb2c;
  *param_1 = 0;
  if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_000189e0();
  }
  DAT_0003bc14 = iVar2 + -1;
  if (DAT_0003bc14 < 1) {
    DAT_0003bbc0 = 0;
  }
  else {
    iVar2 = DAT_0003bc14 * 0xc + DAT_0003bbd0;
    DAT_0003bbc0 = *(undefined4 *)(iVar2 + -0xc);
    DAT_0003bbc4 = *(undefined4 *)(iVar2 + -8);
    DAT_0003bbc8 = *(undefined4 *)(iVar2 + -4);
  }
  FUN_00018a20(&DAT_0003bbc0,"putback");
  FUN_0001bd50(param_1);
  DAT_0003ba14 = DAT_0003bc14;
  if (1 < DAT_0003baf4) {
    __fprintf_chk(*(undefined4 *)PTR_stderr_0003afa4,1,"marking stack at %d\n",DAT_0003bc14);
  }
  DAT_0003ba10 = DAT_0003bc14 + -1;
  if (*param_1 != 0) {
    FUN_0001c6a0(param_1,iVar1 == 0);
    return;
  }
  DAT_0003ba10 = 0xffffffff;
  return;
}

