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

void __regparm3 save_token(Tokens *t)

{
  char **ppcVar1;
  undefined1 *puVar2;
  char *pcVar3;
  char *pcVar4;
  uint uVar5;
  char *pcVar6;
  _obstack_chunk *p_Var7;
  char *pcVar8;
  int *piVar9;
  
  pcVar3 = (t->o_data).next_free;
  pcVar4 = (t->o_data).object_base;
  if (pcVar3 == pcVar4) {
    puVar2 = &(t->o_data).field_0x28;
    *puVar2 = *puVar2 | 2;
  }
  uVar5 = (t->o_data).alignment_mask;
  pcVar6 = (t->o_data).chunk_limit;
  pcVar8 = (char *)((uint)(pcVar3 + uVar5) & ~uVar5);
  p_Var7 = (t->o_data).chunk;
  (t->o_data).next_free = pcVar8;
  if ((uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7)) {
    (t->o_data).next_free = pcVar6;
    pcVar8 = pcVar6;
  }
  (t->o_data).object_base = pcVar8;
  piVar9 = (int *)(t->o_tok).next_free;
  if ((uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4) {
    _obstack_newchunk(&t->o_tok,4);
    piVar9 = (int *)(t->o_tok).next_free;
  }
  *piVar9 = (int)pcVar4;
  piVar9 = (int *)(t->o_tok_len).next_free;
  pcVar6 = (t->o_tok_len).chunk_limit;
  ppcVar1 = &(t->o_tok).next_free;
  *ppcVar1 = *ppcVar1 + 4;
  if ((uint)((int)pcVar6 - (int)piVar9) < 4) {
    _obstack_newchunk(&t->o_tok_len,4);
    piVar9 = (int *)(t->o_tok_len).next_free;
  }
  *piVar9 = (int)(pcVar3 + (-1 - (int)pcVar4));
  ppcVar1 = &(t->o_tok_len).next_free;
  *ppcVar1 = *ppcVar1 + 4;
  t->n_tok = t->n_tok + 1;
  return;
}



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

void __regparm3 FUN_00015c50(int *param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int *piVar5;
  
  iVar1 = param_1[6];
  iVar2 = param_1[5];
  if (iVar1 == iVar2) {
    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;
  }
  uVar3 = param_1[7];
  uVar4 = iVar1 + param_1[9] & ~param_1[9];
  param_1[6] = uVar4;
  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {
    param_1[6] = uVar3;
    uVar4 = uVar3;
  }
  param_1[5] = uVar4;
  piVar5 = (int *)param_1[0x11];
  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {
    _obstack_newchunk(param_1 + 0xe,4);
    piVar5 = (int *)param_1[0x11];
  }
  *piVar5 = iVar2;
  piVar5 = (int *)param_1[0x1c];
  param_1[0x11] = param_1[0x11] + 4;
  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {
    _obstack_newchunk(param_1 + 0x19,4);
    piVar5 = (int *)param_1[0x1c];
  }
  *piVar5 = (iVar1 - iVar2) + -1;
  param_1[0x1c] = param_1[0x1c] + 4;
  *param_1 = *param_1 + 1;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00012120
ADD EBX,0x93a5
SUB ESP,0x1c
MOV EDX,dword ptr [EAX + 0x18]
MOV EBP,dword ptr [EAX + 0x14]
MOV EDI,EDX
SUB EDI,EBP
LEA EAX,[EDI + -0x1]
MOV dword ptr [ESP + 0x8],EAX
CMP EDX,EBP
JZ 0x00015d20
MOV ECX,dword ptr [ESI + 0x24]
LEA EAX,[EDX + ECX*0x1]
NOT ECX
MOV EDX,dword ptr [ESI + 0x1c]
AND EAX,ECX
MOV ECX,dword ptr [ESI + 0x10]
MOV EDI,EAX
MOV dword ptr [ESI + 0x18],EAX
SUB EDI,ECX
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,EDX
SUB EDI,ECX
CMP dword ptr [ESP + 0xc],EDI
JBE 0x00015ca7
MOV dword ptr [ESI + 0x18],EDX
MOV EAX,EDX
MOV dword ptr [ESI + 0x14],EAX
MOV EDX,dword ptr [ESI + 0x44]
MOV EAX,dword ptr [ESI + 0x48]
SUB EAX,EDX
CMP EAX,0x3
JBE 0x00015ce0
MOV dword ptr [EDX],EBP
MOV EDX,dword ptr [ESI + 0x70]
MOV EAX,dword ptr [ESI + 0x74]
ADD dword ptr [ESI + 0x44],0x4
SUB EAX,EDX
CMP EAX,0x3
JBE 0x00015d00
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EDX],EAX
ADD dword ptr [ESI + 0x70],0x4
ADD dword ptr [ESI],0x1
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
LEA EAX,[ESI + 0x38]
PUSH 0x4
PUSH EAX
CALL 0x00017be0
MOV EDX,dword ptr [ESI + 0x44]
ADD ESP,0x10
JMP 0x00015cb7
SUB ESP,0x8
LEA EAX,[ESI + 0x64]
PUSH 0x4
PUSH EAX
CALL 0x00017be0
MOV EDX,dword ptr [ESI + 0x70]
ADD ESP,0x10
JMP 0x00015cca
OR byte ptr [ESI + 0x34],0x2
JMP 0x00015c7d
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_00015c50(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_00015c50(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00015c50(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  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (expression_statement "iVar1 = param_1[6];" (assignment_expression "iVar1 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = param_1[5];" (assignment_expression "iVar2 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }" if (parenthesized_expression "(iVar1 == iVar2)" ( (binary_expression "iVar1 == iVar2" identifier == identifier) )) (compound_statement "{\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }" { (expression_statement "*(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;" (assignment_expression "*(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2" (pointer_expression "*(byte *)(param_1 + 0xd)" * (cast_expression "(byte *)(param_1 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xd) | 2" (pointer_expression "*(byte *)(param_1 + 0xd)" * (cast_expression "(byte *)(param_1 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "uVar3 = param_1[7];" (assignment_expression "uVar3 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = iVar1 + param_1[9] & ~param_1[9];" (assignment_expression "uVar4 = iVar1 + param_1[9] & ~param_1[9]" identifier = (binary_expression "iVar1 + param_1[9] & ~param_1[9]" (binary_expression "iVar1 + param_1[9]" identifier + (subscript_expression "param_1[9]" identifier [ number_literal ])) & (unary_expression "~param_1[9]" ~ (subscript_expression "param_1[9]" identifier [ number_literal ])))) ;) (expression_statement "param_1[6] = uVar4;" (assignment_expression "param_1[6] = uVar4" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }" if (parenthesized_expression "(uVar3 - param_1[4] < uVar4 - param_1[4])" ( (binary_expression "uVar3 - param_1[4] < uVar4 - param_1[4]" (binary_expression "uVar3 - param_1[4]" identifier - (subscript_expression "param_1[4]" identifier [ number_literal ])) < (binary_expression "uVar4 - param_1[4]" identifier - (subscript_expression "param_1[4]" identifier [ number_literal ]))) )) (compound_statement "{\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }" { (expression_statement "param_1[6] = uVar3;" (assignment_expression "param_1[6] = uVar3" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) })) (expression_statement "param_1[5] = uVar4;" (assignment_expression "param_1[5] = uVar4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5 = (int *)param_1[0x11];" (assignment_expression "piVar5 = (int *)param_1[0x11]" identifier = (cast_expression "(int *)param_1[0x11]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ]))) ;) (if_statement "if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }" if (parenthesized_expression "((uint)(param_1[0x12] - (int)piVar5) < 4)" ( (binary_expression "(uint)(param_1[0x12] - (int)piVar5) < 4" (call_expression "(uint)(param_1[0x12] - (int)piVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x12] - (int)piVar5)" ( (binary_expression "param_1[0x12] - (int)piVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }" { (expression_statement "_obstack_newchunk(param_1 + 0xe,4);" (call_expression "_obstack_newchunk(param_1 + 0xe,4)" identifier (argument_list "(param_1 + 0xe,4)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , number_literal ))) ;) (expression_statement "piVar5 = (int *)param_1[0x11];" (assignment_expression "piVar5 = (int *)param_1[0x11]" identifier = (cast_expression "(int *)param_1[0x11]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ]))) ;) })) (expression_statement "*piVar5 = iVar2;" (assignment_expression "*piVar5 = iVar2" (pointer_expression "*piVar5" * identifier) = identifier) ;) (expression_statement "piVar5 = (int *)param_1[0x1c];" (assignment_expression "piVar5 = (int *)param_1[0x1c]" identifier = (cast_expression "(int *)param_1[0x1c]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0x11] = param_1[0x11] + 4;" (assignment_expression "param_1[0x11] = param_1[0x11] + 4" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = (binary_expression "param_1[0x11] + 4" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }" if (parenthesized_expression "((uint)(param_1[0x1d] - (int)piVar5) < 4)" ( (binary_expression "(uint)(param_1[0x1d] - (int)piVar5) < 4" (call_expression "(uint)(param_1[0x1d] - (int)piVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x1d] - (int)piVar5)" ( (binary_expression "param_1[0x1d] - (int)piVar5" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }" { (expression_statement "_obstack_newchunk(param_1 + 0x19,4);" (call_expression "_obstack_newchunk(param_1 + 0x19,4)" identifier (argument_list "(param_1 + 0x19,4)" ( (binary_expression "param_1 + 0x19" identifier + number_literal) , number_literal ))) ;) (expression_statement "piVar5 = (int *)param_1[0x1c];" (assignment_expression "piVar5 = (int *)param_1[0x1c]" identifier = (cast_expression "(int *)param_1[0x1c]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ]))) ;) })) (expression_statement "*piVar5 = (iVar1 - iVar2) + -1;" (assignment_expression "*piVar5 = (iVar1 - iVar2) + -1" (pointer_expression "*piVar5" * identifier) = (binary_expression "(iVar1 - iVar2) + -1" (parenthesized_expression "(iVar1 - iVar2)" ( (binary_expression "iVar1 - iVar2" identifier - identifier) )) + number_literal)) ;) (expression_statement "param_1[0x1c] = param_1[0x1c] + 4;" (assignment_expression "param_1[0x1c] = param_1[0x1c] + 4" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) = (binary_expression "param_1[0x1c] + 4" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*param_1 = *param_1 + 1;" (assignment_expression "*param_1 = *param_1 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "*param_1 + 1" (pointer_expression "*param_1" * identifier) + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 save_token(Tokens *t)\n\n{\n  char **ppcVar1;\n  undefined1 *puVar2;\n  char *pcVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  _obstack_chunk *p_Var7;\n  char *pcVar8;\n  int *piVar9;\n  \n  pcVar3 = (t->o_data).next_free;\n  pcVar4 = (t->o_data).object_base;\n  if (pcVar3 == pcVar4) {\n    puVar2 = &(t->o_data).field_0x28;\n    *puVar2 = *puVar2 | 2;\n  }\n  uVar5 = (t->o_data).alignment_mask;\n  pcVar6 = (t->o_data).chunk_limit;\n  pcVar8 = (char *)((uint)(pcVar3 + uVar5) & ~uVar5);\n  p_Var7 = (t->o_data).chunk;\n  (t->o_data).next_free = pcVar8;\n  if ((uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7)) {\n    (t->o_data).next_free = pcVar6;\n    pcVar8 = pcVar6;\n  }\n  (t->o_data).object_base = pcVar8;\n  piVar9 = (int *)(t->o_tok).next_free;\n  if ((uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    piVar9 = (int *)(t->o_tok).next_free;\n  }\n  *piVar9 = (int)pcVar4;\n  piVar9 = (int *)(t->o_tok_len).next_free;\n  pcVar6 = (t->o_tok_len).chunk_limit;\n  ppcVar1 = &(t->o_tok).next_free;\n  *ppcVar1 = *ppcVar1 + 4;\n  if ((uint)((int)pcVar6 - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok_len,4);\n    piVar9 = (int *)(t->o_tok_len).next_free;\n  }\n  *piVar9 = (int)(pcVar3 + (-1 - (int)pcVar4));\n  ppcVar1 = &(t->o_tok_len).next_free;\n  *ppcVar1 = *ppcVar1 + 4;\n  t->n_tok = t->n_tok + 1;\n  return;\n}\n\n" comment (function_definition "void __regparm3 save_token(Tokens *t)\n\n{\n  char **ppcVar1;\n  undefined1 *puVar2;\n  char *pcVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  _obstack_chunk *p_Var7;\n  char *pcVar8;\n  int *piVar9;\n  \n  pcVar3 = (t->o_data).next_free;\n  pcVar4 = (t->o_data).object_base;\n  if (pcVar3 == pcVar4) {\n    puVar2 = &(t->o_data).field_0x28;\n    *puVar2 = *puVar2 | 2;\n  }\n  uVar5 = (t->o_data).alignment_mask;\n  pcVar6 = (t->o_data).chunk_limit;\n  pcVar8 = (char *)((uint)(pcVar3 + uVar5) & ~uVar5);\n  p_Var7 = (t->o_data).chunk;\n  (t->o_data).next_free = pcVar8;\n  if ((uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7)) {\n    (t->o_data).next_free = pcVar6;\n    pcVar8 = pcVar6;\n  }\n  (t->o_data).object_base = pcVar8;\n  piVar9 = (int *)(t->o_tok).next_free;\n  if ((uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    piVar9 = (int *)(t->o_tok).next_free;\n  }\n  *piVar9 = (int)pcVar4;\n  piVar9 = (int *)(t->o_tok_len).next_free;\n  pcVar6 = (t->o_tok_len).chunk_limit;\n  ppcVar1 = &(t->o_tok).next_free;\n  *ppcVar1 = *ppcVar1 + 4;\n  if ((uint)((int)pcVar6 - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok_len,4);\n    piVar9 = (int *)(t->o_tok_len).next_free;\n  }\n  *piVar9 = (int)(pcVar3 + (-1 - (int)pcVar4));\n  ppcVar1 = &(t->o_tok_len).next_free;\n  *ppcVar1 = *ppcVar1 + 4;\n  t->n_tok = t->n_tok + 1;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "save_token(Tokens *t)" identifier (parameter_list "(Tokens *t)" ( (parameter_declaration "Tokens *t" type_identifier (pointer_declarator "*t" * identifier)) ))) (compound_statement "{\n  char **ppcVar1;\n  undefined1 *puVar2;\n  char *pcVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  _obstack_chunk *p_Var7;\n  char *pcVar8;\n  int *piVar9;\n  \n  pcVar3 = (t->o_data).next_free;\n  pcVar4 = (t->o_data).object_base;\n  if (pcVar3 == pcVar4) {\n    puVar2 = &(t->o_data).field_0x28;\n    *puVar2 = *puVar2 | 2;\n  }\n  uVar5 = (t->o_data).alignment_mask;\n  pcVar6 = (t->o_data).chunk_limit;\n  pcVar8 = (char *)((uint)(pcVar3 + uVar5) & ~uVar5);\n  p_Var7 = (t->o_data).chunk;\n  (t->o_data).next_free = pcVar8;\n  if ((uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7)) {\n    (t->o_data).next_free = pcVar6;\n    pcVar8 = pcVar6;\n  }\n  (t->o_data).object_base = pcVar8;\n  piVar9 = (int *)(t->o_tok).next_free;\n  if ((uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    piVar9 = (int *)(t->o_tok).next_free;\n  }\n  *piVar9 = (int)pcVar4;\n  piVar9 = (int *)(t->o_tok_len).next_free;\n  pcVar6 = (t->o_tok_len).chunk_limit;\n  ppcVar1 = &(t->o_tok).next_free;\n  *ppcVar1 = *ppcVar1 + 4;\n  if ((uint)((int)pcVar6 - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok_len,4);\n    piVar9 = (int *)(t->o_tok_len).next_free;\n  }\n  *piVar9 = (int)(pcVar3 + (-1 - (int)pcVar4));\n  ppcVar1 = &(t->o_tok_len).next_free;\n  *ppcVar1 = *ppcVar1 + 4;\n  t->n_tok = t->n_tok + 1;\n  return;\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "_obstack_chunk *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (expression_statement "pcVar3 = (t->o_data).next_free;" (assignment_expression "pcVar3 = (t->o_data).next_free" identifier = (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar4 = (t->o_data).object_base;" (assignment_expression "pcVar4 = (t->o_data).object_base" identifier = (field_expression "(t->o_data).object_base" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pcVar3 == pcVar4) {\n    puVar2 = &(t->o_data).field_0x28;\n    *puVar2 = *puVar2 | 2;\n  }" if (parenthesized_expression "(pcVar3 == pcVar4)" ( (binary_expression "pcVar3 == pcVar4" identifier == identifier) )) (compound_statement "{\n    puVar2 = &(t->o_data).field_0x28;\n    *puVar2 = *puVar2 | 2;\n  }" { (expression_statement "puVar2 = &(t->o_data).field_0x28;" (assignment_expression "puVar2 = &(t->o_data).field_0x28" identifier = (pointer_expression "&(t->o_data).field_0x28" & (field_expression "(t->o_data).field_0x28" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 | 2;" (assignment_expression "*puVar2 = *puVar2 | 2" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 2" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) })) (expression_statement "uVar5 = (t->o_data).alignment_mask;" (assignment_expression "uVar5 = (t->o_data).alignment_mask" identifier = (field_expression "(t->o_data).alignment_mask" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar6 = (t->o_data).chunk_limit;" (assignment_expression "pcVar6 = (t->o_data).chunk_limit" identifier = (field_expression "(t->o_data).chunk_limit" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar8 = (char *)((uint)(pcVar3 + uVar5) & ~uVar5);" (assignment_expression "pcVar8 = (char *)((uint)(pcVar3 + uVar5) & ~uVar5)" identifier = (cast_expression "(char *)((uint)(pcVar3 + uVar5) & ~uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(pcVar3 + uVar5) & ~uVar5)" ( (binary_expression "(uint)(pcVar3 + uVar5) & ~uVar5" (call_expression "(uint)(pcVar3 + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar3 + uVar5)" ( (binary_expression "pcVar3 + uVar5" identifier + identifier) ))) & (unary_expression "~uVar5" ~ identifier)) )))) ;) (expression_statement "p_Var7 = (t->o_data).chunk;" (assignment_expression "p_Var7 = (t->o_data).chunk" identifier = (field_expression "(t->o_data).chunk" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(t->o_data).next_free = pcVar8;" (assignment_expression "(t->o_data).next_free = pcVar8" (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7)) {\n    (t->o_data).next_free = pcVar6;\n    pcVar8 = pcVar6;\n  }" if (parenthesized_expression "((uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7))" ( (binary_expression "(uint)((int)pcVar6 - (int)p_Var7) < (uint)((int)pcVar8 - (int)p_Var7)" (call_expression "(uint)((int)pcVar6 - (int)p_Var7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar6 - (int)p_Var7)" ( (binary_expression "(int)pcVar6 - (int)p_Var7" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < (call_expression "(uint)((int)pcVar8 - (int)p_Var7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar8 - (int)p_Var7)" ( (binary_expression "(int)pcVar8 - (int)p_Var7" (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n    (t->o_data).next_free = pcVar6;\n    pcVar8 = pcVar6;\n  }" { (expression_statement "(t->o_data).next_free = pcVar6;" (assignment_expression "(t->o_data).next_free = pcVar6" (field_expression "(t->o_data).next_free" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pcVar8 = pcVar6;" (assignment_expression "pcVar8 = pcVar6" identifier = identifier) ;) })) (expression_statement "(t->o_data).object_base = pcVar8;" (assignment_expression "(t->o_data).object_base = pcVar8" (field_expression "(t->o_data).object_base" (parenthesized_expression "(t->o_data)" ( (field_expression "t->o_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "piVar9 = (int *)(t->o_tok).next_free;" (assignment_expression "piVar9 = (int *)(t->o_tok).next_free" identifier = (cast_expression "(int *)(t->o_tok).next_free" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok,4);\n    piVar9 = (int *)(t->o_tok).next_free;\n  }" if (parenthesized_expression "((uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4)" ( (binary_expression "(uint)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4" (call_expression "(uint)((int)(t->o_tok).chunk_limit - (int)piVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(t->o_tok).chunk_limit - (int)piVar9)" ( (binary_expression "(int)(t->o_tok).chunk_limit - (int)piVar9" (cast_expression "(int)(t->o_tok).chunk_limit" ( (type_descriptor "int" primitive_type) ) (field_expression "(t->o_tok).chunk_limit" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier)) - (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(&t->o_tok,4);\n    piVar9 = (int *)(t->o_tok).next_free;\n  }" { (expression_statement "_obstack_newchunk(&t->o_tok,4);" (call_expression "_obstack_newchunk(&t->o_tok,4)" identifier (argument_list "(&t->o_tok,4)" ( (pointer_expression "&t->o_tok" & (field_expression "t->o_tok" identifier -> field_identifier)) , number_literal ))) ;) (expression_statement "piVar9 = (int *)(t->o_tok).next_free;" (assignment_expression "piVar9 = (int *)(t->o_tok).next_free" identifier = (cast_expression "(int *)(t->o_tok).next_free" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier))) ;) })) (expression_statement "*piVar9 = (int)pcVar4;" (assignment_expression "*piVar9 = (int)pcVar4" (pointer_expression "*piVar9" * identifier) = (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar9 = (int *)(t->o_tok_len).next_free;" (assignment_expression "piVar9 = (int *)(t->o_tok_len).next_free" identifier = (cast_expression "(int *)(t->o_tok_len).next_free" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "(t->o_tok_len).next_free" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar6 = (t->o_tok_len).chunk_limit;" (assignment_expression "pcVar6 = (t->o_tok_len).chunk_limit" identifier = (field_expression "(t->o_tok_len).chunk_limit" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "ppcVar1 = &(t->o_tok).next_free;" (assignment_expression "ppcVar1 = &(t->o_tok).next_free" identifier = (pointer_expression "&(t->o_tok).next_free" & (field_expression "(t->o_tok).next_free" (parenthesized_expression "(t->o_tok)" ( (field_expression "t->o_tok" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + 4;" (assignment_expression "*ppcVar1 = *ppcVar1 + 4" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + 4" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if ((uint)((int)pcVar6 - (int)piVar9) < 4) {\n    _obstack_newchunk(&t->o_tok_len,4);\n    piVar9 = (int *)(t->o_tok_len).next_free;\n  }" if (parenthesized_expression "((uint)((int)pcVar6 - (int)piVar9) < 4)" ( (binary_expression "(uint)((int)pcVar6 - (int)piVar9) < 4" (call_expression "(uint)((int)pcVar6 - (int)piVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar6 - (int)piVar9)" ( (binary_expression "(int)pcVar6 - (int)piVar9" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(&t->o_tok_len,4);\n    piVar9 = (int *)(t->o_tok_len).next_free;\n  }" { (expression_statement "_obstack_newchunk(&t->o_tok_len,4);" (call_expression "_obstack_newchunk(&t->o_tok_len,4)" identifier (argument_list "(&t->o_tok_len,4)" ( (pointer_expression "&t->o_tok_len" & (field_expression "t->o_tok_len" identifier -> field_identifier)) , number_literal ))) ;) (expression_statement "piVar9 = (int *)(t->o_tok_len).next_free;" (assignment_expression "piVar9 = (int *)(t->o_tok_len).next_free" identifier = (cast_expression "(int *)(t->o_tok_len).next_free" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "(t->o_tok_len).next_free" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier))) ;) })) (expression_statement "*piVar9 = (int)(pcVar3 + (-1 - (int)pcVar4));" (assignment_expression "*piVar9 = (int)(pcVar3 + (-1 - (int)pcVar4))" (pointer_expression "*piVar9" * identifier) = (cast_expression "(int)(pcVar3 + (-1 - (int)pcVar4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar3 + (-1 - (int)pcVar4))" ( (binary_expression "pcVar3 + (-1 - (int)pcVar4)" identifier + (parenthesized_expression "(-1 - (int)pcVar4)" ( (binary_expression "-1 - (int)pcVar4" number_literal - (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "ppcVar1 = &(t->o_tok_len).next_free;" (assignment_expression "ppcVar1 = &(t->o_tok_len).next_free" identifier = (pointer_expression "&(t->o_tok_len).next_free" & (field_expression "(t->o_tok_len).next_free" (parenthesized_expression "(t->o_tok_len)" ( (field_expression "t->o_tok_len" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + 4;" (assignment_expression "*ppcVar1 = *ppcVar1 + 4" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + 4" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (expression_statement "t->n_tok = t->n_tok + 1;" (assignment_expression "t->n_tok = t->n_tok + 1" (field_expression "t->n_tok" identifier -> field_identifier) = (binary_expression "t->n_tok + 1" (field_expression "t->n_tok" identifier -> field_identifier) + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_00015c50(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00015c50(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00015c50(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  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (expression_statement "iVar1 = param_1[6];" (assignment_expression "iVar1 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = param_1[5];" (assignment_expression "iVar2 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }" if (parenthesized_expression "(iVar1 == iVar2)" ( (binary_expression "iVar1 == iVar2" identifier == identifier) )) (compound_statement "{\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }" { (expression_statement "*(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;" (assignment_expression "*(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2" (pointer_expression "*(byte *)(param_1 + 0xd)" * (cast_expression "(byte *)(param_1 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xd) | 2" (pointer_expression "*(byte *)(param_1 + 0xd)" * (cast_expression "(byte *)(param_1 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "uVar3 = param_1[7];" (assignment_expression "uVar3 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = iVar1 + param_1[9] & ~param_1[9];" (assignment_expression "uVar4 = iVar1 + param_1[9] & ~param_1[9]" identifier = (binary_expression "iVar1 + param_1[9] & ~param_1[9]" (binary_expression "iVar1 + param_1[9]" identifier + (subscript_expression "param_1[9]" identifier [ number_literal ])) & (unary_expression "~param_1[9]" ~ (subscript_expression "param_1[9]" identifier [ number_literal ])))) ;) (expression_statement "param_1[6] = uVar4;" (assignment_expression "param_1[6] = uVar4" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }" if (parenthesized_expression "(uVar3 - param_1[4] < uVar4 - param_1[4])" ( (binary_expression "uVar3 - param_1[4] < uVar4 - param_1[4]" (binary_expression "uVar3 - param_1[4]" identifier - (subscript_expression "param_1[4]" identifier [ number_literal ])) < (binary_expression "uVar4 - param_1[4]" identifier - (subscript_expression "param_1[4]" identifier [ number_literal ]))) )) (compound_statement "{\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }" { (expression_statement "param_1[6] = uVar3;" (assignment_expression "param_1[6] = uVar3" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) })) (expression_statement "param_1[5] = uVar4;" (assignment_expression "param_1[5] = uVar4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5 = (int *)param_1[0x11];" (assignment_expression "piVar5 = (int *)param_1[0x11]" identifier = (cast_expression "(int *)param_1[0x11]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ]))) ;) (if_statement "if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }" if (parenthesized_expression "((uint)(param_1[0x12] - (int)piVar5) < 4)" ( (binary_expression "(uint)(param_1[0x12] - (int)piVar5) < 4" (call_expression "(uint)(param_1[0x12] - (int)piVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x12] - (int)piVar5)" ( (binary_expression "param_1[0x12] - (int)piVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }" { (expression_statement "_obstack_newchunk(param_1 + 0xe,4);" (call_expression "_obstack_newchunk(param_1 + 0xe,4)" identifier (argument_list "(param_1 + 0xe,4)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , number_literal ))) ;) (expression_statement "piVar5 = (int *)param_1[0x11];" (assignment_expression "piVar5 = (int *)param_1[0x11]" identifier = (cast_expression "(int *)param_1[0x11]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ]))) ;) })) (expression_statement "*piVar5 = iVar2;" (assignment_expression "*piVar5 = iVar2" (pointer_expression "*piVar5" * identifier) = identifier) ;) (expression_statement "piVar5 = (int *)param_1[0x1c];" (assignment_expression "piVar5 = (int *)param_1[0x1c]" identifier = (cast_expression "(int *)param_1[0x1c]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0x11] = param_1[0x11] + 4;" (assignment_expression "param_1[0x11] = param_1[0x11] + 4" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = (binary_expression "param_1[0x11] + 4" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }" if (parenthesized_expression "((uint)(param_1[0x1d] - (int)piVar5) < 4)" ( (binary_expression "(uint)(param_1[0x1d] - (int)piVar5) < 4" (call_expression "(uint)(param_1[0x1d] - (int)piVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x1d] - (int)piVar5)" ( (binary_expression "param_1[0x1d] - (int)piVar5" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }" { (expression_statement "_obstack_newchunk(param_1 + 0x19,4);" (call_expression "_obstack_newchunk(param_1 + 0x19,4)" identifier (argument_list "(param_1 + 0x19,4)" ( (binary_expression "param_1 + 0x19" identifier + number_literal) , number_literal ))) ;) (expression_statement "piVar5 = (int *)param_1[0x1c];" (assignment_expression "piVar5 = (int *)param_1[0x1c]" identifier = (cast_expression "(int *)param_1[0x1c]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ]))) ;) })) (expression_statement "*piVar5 = (iVar1 - iVar2) + -1;" (assignment_expression "*piVar5 = (iVar1 - iVar2) + -1" (pointer_expression "*piVar5" * identifier) = (binary_expression "(iVar1 - iVar2) + -1" (parenthesized_expression "(iVar1 - iVar2)" ( (binary_expression "iVar1 - iVar2" identifier - identifier) )) + number_literal)) ;) (expression_statement "param_1[0x1c] = param_1[0x1c] + 4;" (assignment_expression "param_1[0x1c] = param_1[0x1c] + 4" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) = (binary_expression "param_1[0x1c] + 4" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*param_1 = *param_1 + 1;" (assignment_expression "*param_1 = *param_1 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "*param_1 + 1" (pointer_expression "*param_1" * identifier) + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (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 (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) & (unary_expression ~ (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) < (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_00015c50(int *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00015c50(int *param_1)" (identifier "FUN_00015c50") (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  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  \n  iVar1 = param_1[6];\n  iVar2 = param_1[5];\n  if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }\n  uVar3 = param_1[7];\n  uVar4 = iVar1 + param_1[9] & ~param_1[9];\n  param_1[6] = uVar4;\n  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }\n  param_1[5] = uVar4;\n  piVar5 = (int *)param_1[0x11];\n  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }\n  *piVar5 = iVar2;\n  piVar5 = (int *)param_1[0x1c];\n  param_1[0x11] = param_1[0x11] + 4;\n  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }\n  *piVar5 = (iVar1 - iVar2) + -1;\n  param_1[0x1c] = param_1[0x1c] + 4;\n  *param_1 = *param_1 + 1;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (expression_statement "iVar1 = param_1[6];" (assignment_expression "iVar1 = param_1[6]" (identifier "iVar1") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar2 = param_1[5];" (assignment_expression "iVar2 = param_1[5]" (identifier "iVar2") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (iVar1 == iVar2) {\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }" (if "if") (parenthesized_expression "(iVar1 == iVar2)" (( "(") (binary_expression "iVar1 == iVar2" (identifier "iVar1") (== "==") (identifier "iVar2")) () ")")) (compound_statement "{\n    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;\n  }" ({ "{") (expression_statement "*(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;" (assignment_expression "*(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2" (pointer_expression "*(byte *)(param_1 + 0xd)" (* "*") (cast_expression "(byte *)(param_1 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd)" (( "(") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xd) | 2" (pointer_expression "*(byte *)(param_1 + 0xd)" (* "*") (cast_expression "(byte *)(param_1 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd)" (( "(") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar3 = param_1[7];" (assignment_expression "uVar3 = param_1[7]" (identifier "uVar3") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar4 = iVar1 + param_1[9] & ~param_1[9];" (assignment_expression "uVar4 = iVar1 + param_1[9] & ~param_1[9]" (identifier "uVar4") (= "=") (binary_expression "iVar1 + param_1[9] & ~param_1[9]" (binary_expression "iVar1 + param_1[9]" (identifier "iVar1") (+ "+") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (& "&") (unary_expression "~param_1[9]" (~ "~") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))))) (; ";")) (expression_statement "param_1[6] = uVar4;" (assignment_expression "param_1[6] = uVar4" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (uVar3 - param_1[4] < uVar4 - param_1[4]) {\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }" (if "if") (parenthesized_expression "(uVar3 - param_1[4] < uVar4 - param_1[4])" (( "(") (binary_expression "uVar3 - param_1[4] < uVar4 - param_1[4]" (binary_expression "uVar3 - param_1[4]" (identifier "uVar3") (- "-") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (< "<") (binary_expression "uVar4 - param_1[4]" (identifier "uVar4") (- "-") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) () ")")) (compound_statement "{\n    param_1[6] = uVar3;\n    uVar4 = uVar3;\n  }" ({ "{") (expression_statement "param_1[6] = uVar3;" (assignment_expression "param_1[6] = uVar3" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" (identifier "uVar4") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "param_1[5] = uVar4;" (assignment_expression "param_1[5] = uVar4" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "piVar5 = (int *)param_1[0x11];" (assignment_expression "piVar5 = (int *)param_1[0x11]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[0x11]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")))) (; ";")) (if_statement "if ((uint)(param_1[0x12] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }" (if "if") (parenthesized_expression "((uint)(param_1[0x12] - (int)piVar5) < 4)" (( "(") (binary_expression "(uint)(param_1[0x12] - (int)piVar5) < 4" (call_expression "(uint)(param_1[0x12] - (int)piVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[0x12] - (int)piVar5)" (( "(") (binary_expression "param_1[0x12] - (int)piVar5" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (- "-") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) () ")"))) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    _obstack_newchunk(param_1 + 0xe,4);\n    piVar5 = (int *)param_1[0x11];\n  }" ({ "{") (expression_statement "_obstack_newchunk(param_1 + 0xe,4);" (call_expression "_obstack_newchunk(param_1 + 0xe,4)" (identifier "_obstack_newchunk") (argument_list "(param_1 + 0xe,4)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "piVar5 = (int *)param_1[0x11];" (assignment_expression "piVar5 = (int *)param_1[0x11]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[0x11]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")))) (; ";")) (} "}"))) (expression_statement "*piVar5 = iVar2;" (assignment_expression "*piVar5 = iVar2" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar5 = (int *)param_1[0x1c];" (assignment_expression "piVar5 = (int *)param_1[0x1c]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[0x1c]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")))) (; ";")) (expression_statement "param_1[0x11] = param_1[0x11] + 4;" (assignment_expression "param_1[0x11] = param_1[0x11] + 4" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (= "=") (binary_expression "param_1[0x11] + 4" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (+ "+") (number_literal "4"))) (; ";")) (if_statement "if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }" (if "if") (parenthesized_expression "((uint)(param_1[0x1d] - (int)piVar5) < 4)" (( "(") (binary_expression "(uint)(param_1[0x1d] - (int)piVar5) < 4" (call_expression "(uint)(param_1[0x1d] - (int)piVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[0x1d] - (int)piVar5)" (( "(") (binary_expression "param_1[0x1d] - (int)piVar5" (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")) (- "-") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) () ")"))) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    _obstack_newchunk(param_1 + 0x19,4);\n    piVar5 = (int *)param_1[0x1c];\n  }" ({ "{") (expression_statement "_obstack_newchunk(param_1 + 0x19,4);" (call_expression "_obstack_newchunk(param_1 + 0x19,4)" (identifier "_obstack_newchunk") (argument_list "(param_1 + 0x19,4)" (( "(") (binary_expression "param_1 + 0x19" (identifier "param_1") (+ "+") (number_literal "0x19")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "piVar5 = (int *)param_1[0x1c];" (assignment_expression "piVar5 = (int *)param_1[0x1c]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[0x1c]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")))) (; ";")) (} "}"))) (expression_statement "*piVar5 = (iVar1 - iVar2) + -1;" (assignment_expression "*piVar5 = (iVar1 - iVar2) + -1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "(iVar1 - iVar2) + -1" (parenthesized_expression "(iVar1 - iVar2)" (( "(") (binary_expression "iVar1 - iVar2" (identifier "iVar1") (- "-") (identifier "iVar2")) () ")")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0x1c] = param_1[0x1c] + 4;" (assignment_expression "param_1[0x1c] = param_1[0x1c] + 4" (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")) (= "=") (binary_expression "param_1[0x1c] + 4" (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*param_1 = *param_1 + 1;" (assignment_expression "*param_1 = *param_1 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "*param_1 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __regparm3 function_1(type_1 *t)

{
  char **ppcVar1;
  type_2 *puVar2;
  char *var_1;
  char *var_2;
  type_3 var_3;
  char *pcVar6;
  type_4 *p_Var7;
  char *pcVar8;
  int *piVar9;
  
  var_1 = (t->o_data).next_free;
  var_2 = (t->o_data).object_base;
  if (var_1 == var_2) {
    puVar2 = &(t->o_data).field_0x28;
    *puVar2 = *puVar2 | 2;
  }
  var_3 = (t->o_data).alignment_mask;
  pcVar6 = (t->o_data).chunk_limit;
  pcVar8 = (char *)((type_3)(var_1 + var_3) & ~var_3);
  p_Var7 = (t->o_data).chunk;
  (t->o_data).next_free = pcVar8;
  if ((type_3)((int)pcVar6 - (int)p_Var7) < (type_3)((int)pcVar8 - (int)p_Var7)) {
    (t->o_data).next_free = pcVar6;
    pcVar8 = pcVar6;
  }
  (t->o_data).object_base = pcVar8;
  piVar9 = (int *)(t->o_tok).next_free;
  if ((type_3)((int)(t->o_tok).chunk_limit - (int)piVar9) < 4) {
    var_4(&t->o_tok,4);
    piVar9 = (int *)(t->o_tok).next_free;
  }
  *piVar9 = (int)var_2;
  piVar9 = (int *)(t->o_tok_len).next_free;
  pcVar6 = (t->o_tok_len).chunk_limit;
  ppcVar1 = &(t->o_tok).next_free;
  *ppcVar1 = *ppcVar1 + 4;
  if ((type_3)((int)pcVar6 - (int)piVar9) < 4) {
    var_4(&t->o_tok_len,4);
    piVar9 = (int *)(t->o_tok_len).next_free;
  }
  *piVar9 = (int)(var_1 + (-1 - (int)var_2));
  ppcVar1 = &(t->o_tok_len).next_free;
  *ppcVar1 = *ppcVar1 + 4;
  t->n_tok = t->n_tok + 1;
  return;
}


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

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

void __regparm3 MASKED(int *param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int *piVar5;
  
  iVar1 = param_1[6];
  iVar2 = param_1[5];
  if (iVar1 == iVar2) {
    *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) | 2;
  }
  uVar3 = param_1[7];
  uVar4 = iVar1 + param_1[9] & ~param_1[9];
  param_1[6] = uVar4;
  if (uVar3 - param_1[4] < uVar4 - param_1[4]) {
    param_1[6] = uVar3;
    uVar4 = uVar3;
  }
  param_1[5] = uVar4;
  piVar5 = (int *)param_1[0x11];
  if ((uint)(param_1[0x12] - (int)piVar5) < 4) {
    _obstack_newchunk(param_1 + 0xe,4);
    piVar5 = (int *)param_1[0x11];
  }
  *piVar5 = iVar2;
  piVar5 = (int *)param_1[0x1c];
  param_1[0x11] = param_1[0x11] + 4;
  if ((uint)(param_1[0x1d] - (int)piVar5) < 4) {
    _obstack_newchunk(param_1 + 0x19,4);
    piVar5 = (int *)param_1[0x1c];
  }
  *piVar5 = (iVar1 - iVar2) + -1;
  param_1[0x1c] = param_1[0x1c] + 4;
  *param_1 = *param_1 + 1;
  return;
}

