
/* DWARF original prototype: Token * next_token(Lex * this) */

Token * __thiscall gold::Lex::next_token(Lex *this)

{
  char *pcVar1;
  int iVar2;
  char *pcVar3;
  Lex *in_EAX;
  Token local_2c;
  
  get_token(&local_2c,in_EAX,&in_EAX->current_);
  (in_EAX->token_).value_ = local_2c.value_;
  (in_EAX->token_).classification_ = local_2c.classification_;
  (in_EAX->token_).value_length_ = local_2c.value_length_;
  (in_EAX->token_).opcode_ = local_2c.opcode_;
  (in_EAX->token_).lineno_ = local_2c.lineno_;
  (in_EAX->token_).charpos_ = local_2c.charpos_;
  if ((local_2c.classification_ == TOKEN_EOF) &&
     (pcVar1 = in_EAX->current_,
     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_)) {
    iVar2 = in_EAX->lineno_;
    pcVar3 = in_EAX->linestart_;
    (in_EAX->token_).classification_ = TOKEN_INVALID;
    (in_EAX->token_).value_ = (char *)0x0;
    (in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3));
    (in_EAX->token_).value_length_ = 0;
    (in_EAX->token_).opcode_ = 0;
    (in_EAX->token_).lineno_ = iVar2;
    return &in_EAX->token_;
  }
  return &in_EAX->token_;
}



int * __regparm3 FUN_00114f20(int *param_1)

{
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  
  FUN_00114850(&local_2c,param_1,param_1 + 2);
  param_1[6] = local_2c;
  param_1[5] = local_30;
  param_1[7] = local_28;
  param_1[8] = local_24;
  param_1[9] = local_20;
  param_1[10] = local_1c;
  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {
    param_1[5] = 0;
    param_1[6] = 0;
    param_1[10] = (param_1[2] - param_1[0xc]) + 1;
    param_1[7] = 0;
    param_1[8] = 0;
    param_1[9] = param_1[0xb];
    return param_1 + 5;
  }
  return param_1 + 5;
}


PUSH EBX
MOV EBX,EAX
LEA EDX,[EBX + 0x8]
SUB ESP,0x28
MOV EAX,ESP
SUB ESP,0x4
PUSH EDX
PUSH EBX
PUSH EAX
CALL 0x00114850
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EBX + 0x18],EDX
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [EBX + 0x14],EAX
MOV dword ptr [EBX + 0x1c],EDX
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [EBX + 0x20],EDX
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [EBX + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x20]
ADD ESP,0xc
MOV dword ptr [EBX + 0x28],EDX
CMP EAX,0x1
JZ 0x00114f70
ADD ESP,0x28
LEA EAX,[EBX + 0x14]
POP EBX
RET
MOV EAX,dword ptr [EBX + 0x8]
MOV EDX,EAX
SUB EDX,dword ptr [EBX]
CMP EDX,dword ptr [EBX + 0x4]
JNC 0x00114f68
MOV EDX,dword ptr [EBX + 0x2c]
SUB EAX,dword ptr [EBX + 0x30]
MOV dword ptr [EBX + 0x14],0x0
ADD EAX,0x1
MOV dword ptr [EBX + 0x18],0x0
MOV dword ptr [EBX + 0x28],EAX
LEA EAX,[EBX + 0x14]
MOV dword ptr [EBX + 0x1c],0x0
MOV dword ptr [EBX + 0x20],0x0
MOV dword ptr [EBX + 0x24],EDX
ADD ESP,0x28
POP EBX
RET
(translation_unit "int * __regparm3 FUN_00114f20(int *param_1)\n\n{\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}\n\n" (function_definition "int * __regparm3 FUN_00114f20(int *param_1)\n\n{\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00114f20(int *param_1)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00114f20(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 local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}" { (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "FUN_00114850(&local_2c,param_1,param_1 + 2);" (call_expression "FUN_00114850(&local_2c,param_1,param_1 + 2)" identifier (argument_list "(&local_2c,param_1,param_1 + 2)" ( (pointer_expression "&local_2c" & identifier) , identifier , (binary_expression "param_1 + 2" identifier + number_literal) ))) ;) (expression_statement "param_1[6] = local_2c;" (assignment_expression "param_1[6] = local_2c" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = local_30;" (assignment_expression "param_1[5] = local_30" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = local_28;" (assignment_expression "param_1[7] = local_28" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = local_24;" (assignment_expression "param_1[8] = local_24" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = local_20;" (assignment_expression "param_1[9] = local_20" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = local_1c;" (assignment_expression "param_1[10] = local_1c" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }" if (parenthesized_expression "((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1]))" ( (binary_expression "(local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])" (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) && (parenthesized_expression "((uint)(param_1[2] - *param_1) < (uint)param_1[1])" ( (binary_expression "(uint)(param_1[2] - *param_1) < (uint)param_1[1]" (call_expression "(uint)(param_1[2] - *param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] - *param_1)" ( (binary_expression "param_1[2] - *param_1" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier)) ))) < (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }" { (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[10] = (param_1[2] - param_1[0xc]) + 1;" (assignment_expression "param_1[10] = (param_1[2] - param_1[0xc]) + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "(param_1[2] - param_1[0xc]) + 1" (parenthesized_expression "(param_1[2] - param_1[0xc])" ( (binary_expression "param_1[2] - param_1[0xc]" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (subscript_expression "param_1[0xc]" identifier [ number_literal ])) )) + number_literal)) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = param_1[0xb];" (assignment_expression "param_1[9] = param_1[0xb]" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (return_statement "return param_1 + 5;" return (binary_expression "param_1 + 5" identifier + number_literal) ;) })) (return_statement "return param_1 + 5;" return (binary_expression "param_1 + 5" identifier + number_literal) ;) })))
(translation_unit "/* DWARF original prototype: Token * next_token(Lex * this) */\n\nToken * __thiscall gold::Lex::next_token(Lex *this)\n\n{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  Lex *in_EAX;\n  Token local_2c;\n  \n  get_token(&local_2c,in_EAX,&in_EAX->current_);\n  (in_EAX->token_).value_ = local_2c.value_;\n  (in_EAX->token_).classification_ = local_2c.classification_;\n  (in_EAX->token_).value_length_ = local_2c.value_length_;\n  (in_EAX->token_).opcode_ = local_2c.opcode_;\n  (in_EAX->token_).lineno_ = local_2c.lineno_;\n  (in_EAX->token_).charpos_ = local_2c.charpos_;\n  if ((local_2c.classification_ == TOKEN_EOF) &&\n     (pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_)) {\n    iVar2 = in_EAX->lineno_;\n    pcVar3 = in_EAX->linestart_;\n    (in_EAX->token_).classification_ = TOKEN_INVALID;\n    (in_EAX->token_).value_ = (char *)0x0;\n    (in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3));\n    (in_EAX->token_).value_length_ = 0;\n    (in_EAX->token_).opcode_ = 0;\n    (in_EAX->token_).lineno_ = iVar2;\n    return &in_EAX->token_;\n  }\n  return &in_EAX->token_;\n}\n\n" comment (ERROR "Token * __thiscall gold::Lex::next_token(Lex *this)" (binary_expression "Token * __thiscall gold::Lex::next_token(Lex *this" (binary_expression "Token * __thiscall" identifier * identifier) (ERROR "gold::Lex::next_token(Lex" identifier : : identifier : : identifier ( identifier) * identifier) )) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  Lex *in_EAX;\n  Token local_2c;\n  \n  get_token(&local_2c,in_EAX,&in_EAX->current_);\n  (in_EAX->token_).value_ = local_2c.value_;\n  (in_EAX->token_).classification_ = local_2c.classification_;\n  (in_EAX->token_).value_length_ = local_2c.value_length_;\n  (in_EAX->token_).opcode_ = local_2c.opcode_;\n  (in_EAX->token_).lineno_ = local_2c.lineno_;\n  (in_EAX->token_).charpos_ = local_2c.charpos_;\n  if ((local_2c.classification_ == TOKEN_EOF) &&\n     (pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_)) {\n    iVar2 = in_EAX->lineno_;\n    pcVar3 = in_EAX->linestart_;\n    (in_EAX->token_).classification_ = TOKEN_INVALID;\n    (in_EAX->token_).value_ = (char *)0x0;\n    (in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3));\n    (in_EAX->token_).value_length_ = 0;\n    (in_EAX->token_).opcode_ = 0;\n    (in_EAX->token_).lineno_ = iVar2;\n    return &in_EAX->token_;\n  }\n  return &in_EAX->token_;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "Lex *in_EAX;" type_identifier (pointer_declarator "*in_EAX" * identifier) ;) (declaration "Token local_2c;" type_identifier identifier ;) (expression_statement "get_token(&local_2c,in_EAX,&in_EAX->current_);" (call_expression "get_token(&local_2c,in_EAX,&in_EAX->current_)" identifier (argument_list "(&local_2c,in_EAX,&in_EAX->current_)" ( (pointer_expression "&local_2c" & identifier) , identifier , (pointer_expression "&in_EAX->current_" & (field_expression "in_EAX->current_" identifier -> field_identifier)) ))) ;) (expression_statement "(in_EAX->token_).value_ = local_2c.value_;" (assignment_expression "(in_EAX->token_).value_ = local_2c.value_" (field_expression "(in_EAX->token_).value_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_2c.value_" identifier . field_identifier)) ;) (expression_statement "(in_EAX->token_).classification_ = local_2c.classification_;" (assignment_expression "(in_EAX->token_).classification_ = local_2c.classification_" (field_expression "(in_EAX->token_).classification_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_2c.classification_" identifier . field_identifier)) ;) (expression_statement "(in_EAX->token_).value_length_ = local_2c.value_length_;" (assignment_expression "(in_EAX->token_).value_length_ = local_2c.value_length_" (field_expression "(in_EAX->token_).value_length_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_2c.value_length_" identifier . field_identifier)) ;) (expression_statement "(in_EAX->token_).opcode_ = local_2c.opcode_;" (assignment_expression "(in_EAX->token_).opcode_ = local_2c.opcode_" (field_expression "(in_EAX->token_).opcode_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_2c.opcode_" identifier . field_identifier)) ;) (expression_statement "(in_EAX->token_).lineno_ = local_2c.lineno_;" (assignment_expression "(in_EAX->token_).lineno_ = local_2c.lineno_" (field_expression "(in_EAX->token_).lineno_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_2c.lineno_" identifier . field_identifier)) ;) (expression_statement "(in_EAX->token_).charpos_ = local_2c.charpos_;" (assignment_expression "(in_EAX->token_).charpos_ = local_2c.charpos_" (field_expression "(in_EAX->token_).charpos_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_2c.charpos_" identifier . field_identifier)) ;) (if_statement "if ((local_2c.classification_ == TOKEN_EOF) &&\n     (pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_)) {\n    iVar2 = in_EAX->lineno_;\n    pcVar3 = in_EAX->linestart_;\n    (in_EAX->token_).classification_ = TOKEN_INVALID;\n    (in_EAX->token_).value_ = (char *)0x0;\n    (in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3));\n    (in_EAX->token_).value_length_ = 0;\n    (in_EAX->token_).opcode_ = 0;\n    (in_EAX->token_).lineno_ = iVar2;\n    return &in_EAX->token_;\n  }" if (parenthesized_expression "((local_2c.classification_ == TOKEN_EOF) &&\n     (pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_))" ( (binary_expression "(local_2c.classification_ == TOKEN_EOF) &&\n     (pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_)" (parenthesized_expression "(local_2c.classification_ == TOKEN_EOF)" ( (binary_expression "local_2c.classification_ == TOKEN_EOF" (field_expression "local_2c.classification_" identifier . field_identifier) == identifier) )) && (parenthesized_expression "(pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_)" ( (comma_expression "pcVar1 = in_EAX->current_,\n     (uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_" (assignment_expression "pcVar1 = in_EAX->current_" identifier = (field_expression "in_EAX->current_" identifier -> field_identifier)) , (binary_expression "(uint)((int)pcVar1 - (int)in_EAX->input_string_) < in_EAX->input_length_" (call_expression "(uint)((int)pcVar1 - (int)in_EAX->input_string_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar1 - (int)in_EAX->input_string_)" ( (binary_expression "(int)pcVar1 - (int)in_EAX->input_string_" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)in_EAX->input_string_" ( (type_descriptor "int" primitive_type) ) (field_expression "in_EAX->input_string_" identifier -> field_identifier))) ))) < (field_expression "in_EAX->input_length_" identifier -> field_identifier))) ))) )) (compound_statement "{\n    iVar2 = in_EAX->lineno_;\n    pcVar3 = in_EAX->linestart_;\n    (in_EAX->token_).classification_ = TOKEN_INVALID;\n    (in_EAX->token_).value_ = (char *)0x0;\n    (in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3));\n    (in_EAX->token_).value_length_ = 0;\n    (in_EAX->token_).opcode_ = 0;\n    (in_EAX->token_).lineno_ = iVar2;\n    return &in_EAX->token_;\n  }" { (expression_statement "iVar2 = in_EAX->lineno_;" (assignment_expression "iVar2 = in_EAX->lineno_" identifier = (field_expression "in_EAX->lineno_" identifier -> field_identifier)) ;) (expression_statement "pcVar3 = in_EAX->linestart_;" (assignment_expression "pcVar3 = in_EAX->linestart_" identifier = (field_expression "in_EAX->linestart_" identifier -> field_identifier)) ;) (expression_statement "(in_EAX->token_).classification_ = TOKEN_INVALID;" (assignment_expression "(in_EAX->token_).classification_ = TOKEN_INVALID" (field_expression "(in_EAX->token_).classification_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(in_EAX->token_).value_ = (char *)0x0;" (assignment_expression "(in_EAX->token_).value_ = (char *)0x0" (field_expression "(in_EAX->token_).value_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3));" (assignment_expression "(in_EAX->token_).charpos_ = (int)(pcVar1 + (1 - (int)pcVar3))" (field_expression "(in_EAX->token_).charpos_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(int)(pcVar1 + (1 - (int)pcVar3))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar1 + (1 - (int)pcVar3))" ( (binary_expression "pcVar1 + (1 - (int)pcVar3)" identifier + (parenthesized_expression "(1 - (int)pcVar3)" ( (binary_expression "1 - (int)pcVar3" number_literal - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "(in_EAX->token_).value_length_ = 0;" (assignment_expression "(in_EAX->token_).value_length_ = 0" (field_expression "(in_EAX->token_).value_length_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(in_EAX->token_).opcode_ = 0;" (assignment_expression "(in_EAX->token_).opcode_ = 0" (field_expression "(in_EAX->token_).opcode_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(in_EAX->token_).lineno_ = iVar2;" (assignment_expression "(in_EAX->token_).lineno_ = iVar2" (field_expression "(in_EAX->token_).lineno_" (parenthesized_expression "(in_EAX->token_)" ( (field_expression "in_EAX->token_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return &in_EAX->token_;" return (pointer_expression "&in_EAX->token_" & (field_expression "in_EAX->token_" identifier -> field_identifier)) ;) })) (return_statement "return &in_EAX->token_;" return (pointer_expression "&in_EAX->token_" & (field_expression "in_EAX->token_" identifier -> field_identifier)) ;) }))
(translation_unit "int * __regparm3 FUN_00114f20(int *param_1)\n\n{\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}\n\n" (function_definition "int * __regparm3 FUN_00114f20(int *param_1)\n\n{\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00114f20(int *param_1)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00114f20(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 local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}" { (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "FUN_00114850(&local_2c,param_1,param_1 + 2);" (call_expression "FUN_00114850(&local_2c,param_1,param_1 + 2)" identifier (argument_list "(&local_2c,param_1,param_1 + 2)" ( (pointer_expression "&local_2c" & identifier) , identifier , (binary_expression "param_1 + 2" identifier + number_literal) ))) ;) (expression_statement "param_1[6] = local_2c;" (assignment_expression "param_1[6] = local_2c" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = local_30;" (assignment_expression "param_1[5] = local_30" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = local_28;" (assignment_expression "param_1[7] = local_28" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = local_24;" (assignment_expression "param_1[8] = local_24" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = local_20;" (assignment_expression "param_1[9] = local_20" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = local_1c;" (assignment_expression "param_1[10] = local_1c" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }" if (parenthesized_expression "((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1]))" ( (binary_expression "(local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])" (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) && (parenthesized_expression "((uint)(param_1[2] - *param_1) < (uint)param_1[1])" ( (binary_expression "(uint)(param_1[2] - *param_1) < (uint)param_1[1]" (call_expression "(uint)(param_1[2] - *param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] - *param_1)" ( (binary_expression "param_1[2] - *param_1" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier)) ))) < (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }" { (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[10] = (param_1[2] - param_1[0xc]) + 1;" (assignment_expression "param_1[10] = (param_1[2] - param_1[0xc]) + 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "(param_1[2] - param_1[0xc]) + 1" (parenthesized_expression "(param_1[2] - param_1[0xc])" ( (binary_expression "param_1[2] - param_1[0xc]" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (subscript_expression "param_1[0xc]" identifier [ number_literal ])) )) + number_literal)) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = param_1[0xb];" (assignment_expression "param_1[9] = param_1[0xb]" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (return_statement "return param_1 + 5;" return (binary_expression "param_1 + 5" identifier + number_literal) ;) })) (return_statement "return param_1 + 5;" return (binary_expression "param_1 + 5" identifier + number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) ))) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (return_statement return (binary_expression IDENT + LIT) ;) })) (return_statement return (binary_expression IDENT + LIT) ;) })))
(function_definition "int * __regparm3 FUN_00114f20(int *param_1)\n\n{\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}" (primitive_type "int") (pointer_declarator "* __regparm3 FUN_00114f20(int *param_1)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00114f20(int *param_1)" (identifier "FUN_00114f20") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  FUN_00114850(&local_2c,param_1,param_1 + 2);\n  param_1[6] = local_2c;\n  param_1[5] = local_30;\n  param_1[7] = local_28;\n  param_1[8] = local_24;\n  param_1[9] = local_20;\n  param_1[10] = local_1c;\n  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }\n  return param_1 + 5;\n}" ({ "{") (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "FUN_00114850(&local_2c,param_1,param_1 + 2);" (call_expression "FUN_00114850(&local_2c,param_1,param_1 + 2)" (identifier "FUN_00114850") (argument_list "(&local_2c,param_1,param_1 + 2)" (( "(") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (identifier "param_1") (, ",") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "param_1[6] = local_2c;" (assignment_expression "param_1[6] = local_2c" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "param_1[5] = local_30;" (assignment_expression "param_1[5] = local_30" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "param_1[7] = local_28;" (assignment_expression "param_1[7] = local_28" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "param_1[8] = local_24;" (assignment_expression "param_1[8] = local_24" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "param_1[9] = local_20;" (assignment_expression "param_1[9] = local_20" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "param_1[10] = local_1c;" (assignment_expression "param_1[10] = local_1c" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_1c")) (; ";")) (if_statement "if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }" (if "if") (parenthesized_expression "((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1]))" (( "(") (binary_expression "(local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])" (parenthesized_expression "(local_30 == 1)" (( "(") (binary_expression "local_30 == 1" (identifier "local_30") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((uint)(param_1[2] - *param_1) < (uint)param_1[1])" (( "(") (binary_expression "(uint)(param_1[2] - *param_1) < (uint)param_1[1]" (call_expression "(uint)(param_1[2] - *param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[2] - *param_1)" (( "(") (binary_expression "param_1[2] - *param_1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")"))) (< "<") (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")"))) () ")")) (compound_statement "{\n    param_1[5] = 0;\n    param_1[6] = 0;\n    param_1[10] = (param_1[2] - param_1[0xc]) + 1;\n    param_1[7] = 0;\n    param_1[8] = 0;\n    param_1[9] = param_1[0xb];\n    return param_1 + 5;\n  }" ({ "{") (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[10] = (param_1[2] - param_1[0xc]) + 1;" (assignment_expression "param_1[10] = (param_1[2] - param_1[0xc]) + 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "(param_1[2] - param_1[0xc]) + 1" (parenthesized_expression "(param_1[2] - param_1[0xc])" (( "(") (binary_expression "param_1[2] - param_1[0xc]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[9] = param_1[0xb];" (assignment_expression "param_1[9] = param_1[0xb]" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (return_statement "return param_1 + 5;" (return "return") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5")) (; ";")) (} "}"))) (return_statement "return param_1 + 5;" (return "return") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5")) (; ";")) (} "}")))

/* DWARF original prototype: Token * next_token(Lex * this) */

type_2 * __thiscall gold::type_1::next_token(type_1 *this)

{
  char *var_3;
  int iVar2;
  char *pcVar3;
  type_1 *in_EAX;
  type_2 local_2c;
  
  var_1(&local_2c,in_EAX,&in_EAX->current_);
  (in_EAX->token_).value_ = local_2c.value_;
  (in_EAX->token_).classification_ = local_2c.classification_;
  (in_EAX->token_).value_length_ = local_2c.value_length_;
  (in_EAX->token_).opcode_ = local_2c.opcode_;
  (in_EAX->token_).lineno_ = local_2c.lineno_;
  (in_EAX->token_).charpos_ = local_2c.charpos_;
  if ((local_2c.classification_ == var_2) &&
     (var_3 = in_EAX->current_,
     (uint)((int)var_3 - (int)in_EAX->input_string_) < in_EAX->input_length_)) {
    iVar2 = in_EAX->lineno_;
    pcVar3 = in_EAX->linestart_;
    (in_EAX->token_).classification_ = TOKEN_INVALID;
    (in_EAX->token_).value_ = (char *)0x0;
    (in_EAX->token_).charpos_ = (int)(var_3 + (1 - (int)pcVar3));
    (in_EAX->token_).value_length_ = 0;
    (in_EAX->token_).opcode_ = 0;
    (in_EAX->token_).lineno_ = iVar2;
    return &in_EAX->token_;
  }
  return &in_EAX->token_;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator (ERROR (identifier)) 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)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (return_statement (binary_expression left: (identifier) right: (number_literal))))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

int * __regparm3 MASKED(int *param_1)

{
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  
  FUN_00114850(&local_2c,param_1,param_1 + 2);
  param_1[6] = local_2c;
  param_1[5] = local_30;
  param_1[7] = local_28;
  param_1[8] = local_24;
  param_1[9] = local_20;
  param_1[10] = local_1c;
  if ((local_30 == 1) && ((uint)(param_1[2] - *param_1) < (uint)param_1[1])) {
    param_1[5] = 0;
    param_1[6] = 0;
    param_1[10] = (param_1[2] - param_1[0xc]) + 1;
    param_1[7] = 0;
    param_1[8] = 0;
    param_1[9] = param_1[0xb];
    return param_1 + 5;
  }
  return param_1 + 5;
}

