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

void cfi_add_label(char *name)

{
  uint __n;
  char *pcVar1;
  size_t sVar2;
  cfi_insn_data *pcVar3;
  
  sVar2 = strlen(name);
  __n = sVar2 + 1;
  pcVar3 = alloc_cfi_insn_data();
  pcVar3->insn = 0x106;
  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < __n) {
    _obstack_newchunk(&notes,__n);
  }
  memcpy(notes.next_free,name,__n);
  if (notes.next_free + __n == notes.object_base) {
    notes._40_1_ = notes._40_1_ | 2;
  }
  notes.next_free =
       (char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask);
  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <
      (uint)((int)notes.next_free - (int)notes.chunk)) {
    notes.next_free = notes.chunk_limit;
  }
  pcVar1 = notes.next_free;
  (pcVar3->u).sym_name = notes.object_base;
  notes.object_base = pcVar1;
  return;
}



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

void FUN_0001f270(char *param_1)

{
  uint uVar1;
  size_t sVar2;
  int iVar3;
  
  sVar2 = strlen(param_1);
  uVar1 = sVar2 + 1;
  iVar3 = FUN_0001d5f0();
  *(undefined4 *)(iVar3 + 4) = 0x106;
  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {
    _obstack_newchunk(&DAT_00089a20,uVar1);
  }
  memcpy(DAT_00089a2c,param_1,uVar1);
  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {
    DAT_00089a48 = DAT_00089a48 | 2;
  }
  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);
  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {
    DAT_00089a2c = (void *)DAT_00089a30;
  }
  uVar1 = (uint)DAT_00089a2c;
  *(uint *)(iVar3 + 8) = DAT_00089a28;
  DAT_00089a28 = uVar1;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016000
ADD EBX,0x60d87
SUB ESP,0x28
MOV EBP,dword ptr [ESP + 0x3c]
PUSH EBP
CALL 0x00014430
ADD ESP,0x10
LEA ESI,[EAX + 0x1]
CALL 0x0001d5f0
LEA EDI,[EBX + 0x9a20]
MOV EDX,EAX
MOV dword ptr [EAX + 0x4],0x106
MOV ECX,dword ptr [EDI + 0xc]
MOV EAX,dword ptr [EDI + 0x10]
SUB EAX,ECX
CMP ESI,EAX
JA 0x0001f310
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0x4
PUSH ESI
PUSH EBP
PUSH ECX
CALL 0x000140f0
MOV EBP,dword ptr [EDI + 0x8]
ADD ESI,dword ptr [EDI + 0xc]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],ESI
MOV EDX,dword ptr [ESP + 0xc]
CMP ESI,EBP
JZ 0x0001f330
MOV ECX,dword ptr [EDI + 0x18]
MOV EBX,dword ptr [EDI + 0x4]
LEA EAX,[ESI + ECX*0x1]
NOT ECX
AND EAX,ECX
MOV ECX,dword ptr [EDI + 0x10]
MOV ESI,EAX
MOV dword ptr [EDI + 0xc],EAX
SUB ESI,EBX
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,ECX
SUB ESI,EBX
CMP dword ptr [ESP + 0xc],ESI
JBE 0x0001f2ff
MOV dword ptr [EDI + 0xc],ECX
MOV EAX,ECX
MOV dword ptr [EDI + 0x8],EAX
MOV dword ptr [EDX + 0x8],EBP
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0x8
PUSH ESI
PUSH EDI
CALL 0x00014190
ADD ESP,0x10
MOV ECX,dword ptr [EDI + 0xc]
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x0001f2b2
OR byte ptr [EDI + 0x28],0x2
JMP 0x0001f2d5
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0001f270(char *param_1)\n\n{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}\n\n" comment (function_definition "void FUN_0001f270(char *param_1)\n\n{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}" primitive_type (function_declarator "FUN_0001f270(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "sVar2 = strlen(param_1);" (assignment_expression "sVar2 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar1 = sVar2 + 1;" (assignment_expression "uVar1 = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001d5f0();" (assignment_expression "iVar3 = FUN_0001d5f0()" identifier = (call_expression "FUN_0001d5f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 4) = 0x106;" (assignment_expression "*(undefined4 *)(iVar3 + 4) = 0x106" (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }" if (parenthesized_expression "(DAT_00089a30 - (int)DAT_00089a2c < uVar1)" ( (binary_expression "DAT_00089a30 - (int)DAT_00089a2c < uVar1" (binary_expression "DAT_00089a30 - (int)DAT_00089a2c" identifier - (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }" { (expression_statement "_obstack_newchunk(&DAT_00089a20,uVar1);" (call_expression "_obstack_newchunk(&DAT_00089a20,uVar1)" identifier (argument_list "(&DAT_00089a20,uVar1)" ( (pointer_expression "&DAT_00089a20" & identifier) , identifier ))) ;) })) (expression_statement "memcpy(DAT_00089a2c,param_1,uVar1);" (call_expression "memcpy(DAT_00089a2c,param_1,uVar1)" identifier (argument_list "(DAT_00089a2c,param_1,uVar1)" ( identifier , identifier , identifier ))) ;) (if_statement "if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }" if (parenthesized_expression "(uVar1 + (int)DAT_00089a2c == DAT_00089a28)" ( (binary_expression "uVar1 + (int)DAT_00089a2c == DAT_00089a28" (binary_expression "uVar1 + (int)DAT_00089a2c" identifier + (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }" { (expression_statement "DAT_00089a48 = DAT_00089a48 | 2;" (assignment_expression "DAT_00089a48 = DAT_00089a48 | 2" identifier = (binary_expression "DAT_00089a48 | 2" identifier | number_literal)) ;) })) (expression_statement "DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);" (assignment_expression "DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" identifier = (cast_expression "(void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" ( (binary_expression "uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38" (binary_expression "uVar1 + (int)DAT_00089a2c + DAT_00089a38" (binary_expression "uVar1 + (int)DAT_00089a2c" identifier + (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) & (unary_expression "~DAT_00089a38" ~ identifier)) )))) ;) (if_statement "if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }" if (parenthesized_expression "(DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24))" ( (binary_expression "DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)" (binary_expression "DAT_00089a30 - DAT_00089a24" identifier - identifier) < (call_expression "(uint)((int)DAT_00089a2c - DAT_00089a24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)DAT_00089a2c - DAT_00089a24)" ( (binary_expression "(int)DAT_00089a2c - DAT_00089a24" (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }" { (expression_statement "DAT_00089a2c = (void *)DAT_00089a30;" (assignment_expression "DAT_00089a2c = (void *)DAT_00089a30" identifier = (cast_expression "(void *)DAT_00089a30" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "uVar1 = (uint)DAT_00089a2c;" (assignment_expression "uVar1 = (uint)DAT_00089a2c" identifier = (cast_expression "(uint)DAT_00089a2c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uint *)(iVar3 + 8) = DAT_00089a28;" (assignment_expression "*(uint *)(iVar3 + 8) = DAT_00089a28" (pointer_expression "*(uint *)(iVar3 + 8)" * (cast_expression "(uint *)(iVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "DAT_00089a28 = uVar1;" (assignment_expression "DAT_00089a28 = uVar1" identifier = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid cfi_add_label(char *name)\n\n{\n  uint __n;\n  char *pcVar1;\n  size_t sVar2;\n  cfi_insn_data *pcVar3;\n  \n  sVar2 = strlen(name);\n  __n = sVar2 + 1;\n  pcVar3 = alloc_cfi_insn_data();\n  pcVar3->insn = 0x106;\n  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < __n) {\n    _obstack_newchunk(&notes,__n);\n  }\n  memcpy(notes.next_free,name,__n);\n  if (notes.next_free + __n == notes.object_base) {\n    notes._40_1_ = notes._40_1_ | 2;\n  }\n  notes.next_free =\n       (char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask);\n  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }\n  pcVar1 = notes.next_free;\n  (pcVar3->u).sym_name = notes.object_base;\n  notes.object_base = pcVar1;\n  return;\n}\n\n" comment comment (function_definition "void cfi_add_label(char *name)\n\n{\n  uint __n;\n  char *pcVar1;\n  size_t sVar2;\n  cfi_insn_data *pcVar3;\n  \n  sVar2 = strlen(name);\n  __n = sVar2 + 1;\n  pcVar3 = alloc_cfi_insn_data();\n  pcVar3->insn = 0x106;\n  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < __n) {\n    _obstack_newchunk(&notes,__n);\n  }\n  memcpy(notes.next_free,name,__n);\n  if (notes.next_free + __n == notes.object_base) {\n    notes._40_1_ = notes._40_1_ | 2;\n  }\n  notes.next_free =\n       (char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask);\n  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }\n  pcVar1 = notes.next_free;\n  (pcVar3->u).sym_name = notes.object_base;\n  notes.object_base = pcVar1;\n  return;\n}" primitive_type (function_declarator "cfi_add_label(char *name)" identifier (parameter_list "(char *name)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) ))) (compound_statement "{\n  uint __n;\n  char *pcVar1;\n  size_t sVar2;\n  cfi_insn_data *pcVar3;\n  \n  sVar2 = strlen(name);\n  __n = sVar2 + 1;\n  pcVar3 = alloc_cfi_insn_data();\n  pcVar3->insn = 0x106;\n  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < __n) {\n    _obstack_newchunk(&notes,__n);\n  }\n  memcpy(notes.next_free,name,__n);\n  if (notes.next_free + __n == notes.object_base) {\n    notes._40_1_ = notes._40_1_ | 2;\n  }\n  notes.next_free =\n       (char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask);\n  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }\n  pcVar1 = notes.next_free;\n  (pcVar3->u).sym_name = notes.object_base;\n  notes.object_base = pcVar1;\n  return;\n}" { (declaration "uint __n;" type_identifier identifier ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "cfi_insn_data *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (expression_statement "sVar2 = strlen(name);" (assignment_expression "sVar2 = strlen(name)" identifier = (call_expression "strlen(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "__n = sVar2 + 1;" (assignment_expression "__n = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (expression_statement "pcVar3 = alloc_cfi_insn_data();" (assignment_expression "pcVar3 = alloc_cfi_insn_data()" identifier = (call_expression "alloc_cfi_insn_data()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar3->insn = 0x106;" (assignment_expression "pcVar3->insn = 0x106" (field_expression "pcVar3->insn" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < __n) {\n    _obstack_newchunk(&notes,__n);\n  }" if (parenthesized_expression "((uint)((int)notes.chunk_limit - (int)notes.next_free) < __n)" ( (binary_expression "(uint)((int)notes.chunk_limit - (int)notes.next_free) < __n" (call_expression "(uint)((int)notes.chunk_limit - (int)notes.next_free)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)notes.chunk_limit - (int)notes.next_free)" ( (binary_expression "(int)notes.chunk_limit - (int)notes.next_free" (cast_expression "(int)notes.chunk_limit" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk_limit" identifier . field_identifier)) - (cast_expression "(int)notes.next_free" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.next_free" identifier . field_identifier))) ))) < identifier) )) (compound_statement "{\n    _obstack_newchunk(&notes,__n);\n  }" { (expression_statement "_obstack_newchunk(&notes,__n);" (call_expression "_obstack_newchunk(&notes,__n)" identifier (argument_list "(&notes,__n)" ( (pointer_expression "&notes" & identifier) , identifier ))) ;) })) (expression_statement "memcpy(notes.next_free,name,__n);" (call_expression "memcpy(notes.next_free,name,__n)" identifier (argument_list "(notes.next_free,name,__n)" ( (field_expression "notes.next_free" identifier . field_identifier) , identifier , identifier ))) ;) (if_statement "if (notes.next_free + __n == notes.object_base) {\n    notes._40_1_ = notes._40_1_ | 2;\n  }" if (parenthesized_expression "(notes.next_free + __n == notes.object_base)" ( (binary_expression "notes.next_free + __n == notes.object_base" (binary_expression "notes.next_free + __n" (field_expression "notes.next_free" identifier . field_identifier) + identifier) == (field_expression "notes.object_base" identifier . field_identifier)) )) (compound_statement "{\n    notes._40_1_ = notes._40_1_ | 2;\n  }" { (expression_statement "notes._40_1_ = notes._40_1_ | 2;" (assignment_expression "notes._40_1_ = notes._40_1_ | 2" (field_expression "notes._40_1_" identifier . field_identifier) = (binary_expression "notes._40_1_ | 2" (field_expression "notes._40_1_" identifier . field_identifier) | number_literal)) ;) })) (expression_statement "notes.next_free =\n       (char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask);" (assignment_expression "notes.next_free =\n       (char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask)" (field_expression "notes.next_free" identifier . field_identifier) = (cast_expression "(char *)((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask)" ( (binary_expression "(uint)(notes.next_free + __n + notes.alignment_mask) & ~notes.alignment_mask" (call_expression "(uint)(notes.next_free + __n + notes.alignment_mask)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(notes.next_free + __n + notes.alignment_mask)" ( (binary_expression "notes.next_free + __n + notes.alignment_mask" (binary_expression "notes.next_free + __n" (field_expression "notes.next_free" identifier . field_identifier) + identifier) + (field_expression "notes.alignment_mask" identifier . field_identifier)) ))) & (unary_expression "~notes.alignment_mask" ~ (field_expression "notes.alignment_mask" identifier . field_identifier))) )))) ;) (if_statement "if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }" if (parenthesized_expression "((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk))" ( (binary_expression "(uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)" (call_expression "(uint)((int)notes.chunk_limit - (int)notes.chunk)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)notes.chunk_limit - (int)notes.chunk)" ( (binary_expression "(int)notes.chunk_limit - (int)notes.chunk" (cast_expression "(int)notes.chunk_limit" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk_limit" identifier . field_identifier)) - (cast_expression "(int)notes.chunk" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk" identifier . field_identifier))) ))) < (call_expression "(uint)((int)notes.next_free - (int)notes.chunk)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)notes.next_free - (int)notes.chunk)" ( (binary_expression "(int)notes.next_free - (int)notes.chunk" (cast_expression "(int)notes.next_free" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.next_free" identifier . field_identifier)) - (cast_expression "(int)notes.chunk" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk" identifier . field_identifier))) )))) )) (compound_statement "{\n    notes.next_free = notes.chunk_limit;\n  }" { (expression_statement "notes.next_free = notes.chunk_limit;" (assignment_expression "notes.next_free = notes.chunk_limit" (field_expression "notes.next_free" identifier . field_identifier) = (field_expression "notes.chunk_limit" identifier . field_identifier)) ;) })) (expression_statement "pcVar1 = notes.next_free;" (assignment_expression "pcVar1 = notes.next_free" identifier = (field_expression "notes.next_free" identifier . field_identifier)) ;) (expression_statement "(pcVar3->u).sym_name = notes.object_base;" (assignment_expression "(pcVar3->u).sym_name = notes.object_base" (field_expression "(pcVar3->u).sym_name" (parenthesized_expression "(pcVar3->u)" ( (field_expression "pcVar3->u" identifier -> field_identifier) )) . field_identifier) = (field_expression "notes.object_base" identifier . field_identifier)) ;) (expression_statement "notes.object_base = pcVar1;" (assignment_expression "notes.object_base = pcVar1" (field_expression "notes.object_base" identifier . field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0001f270(char *param_1)\n\n{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}\n\n" (function_definition "void FUN_0001f270(char *param_1)\n\n{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}" primitive_type (function_declarator "FUN_0001f270(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "sVar2 = strlen(param_1);" (assignment_expression "sVar2 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar1 = sVar2 + 1;" (assignment_expression "uVar1 = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001d5f0();" (assignment_expression "iVar3 = FUN_0001d5f0()" identifier = (call_expression "FUN_0001d5f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 4) = 0x106;" (assignment_expression "*(undefined4 *)(iVar3 + 4) = 0x106" (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }" if (parenthesized_expression "(DAT_00089a30 - (int)DAT_00089a2c < uVar1)" ( (binary_expression "DAT_00089a30 - (int)DAT_00089a2c < uVar1" (binary_expression "DAT_00089a30 - (int)DAT_00089a2c" identifier - (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }" { (expression_statement "_obstack_newchunk(&DAT_00089a20,uVar1);" (call_expression "_obstack_newchunk(&DAT_00089a20,uVar1)" identifier (argument_list "(&DAT_00089a20,uVar1)" ( (pointer_expression "&DAT_00089a20" & identifier) , identifier ))) ;) })) (expression_statement "memcpy(DAT_00089a2c,param_1,uVar1);" (call_expression "memcpy(DAT_00089a2c,param_1,uVar1)" identifier (argument_list "(DAT_00089a2c,param_1,uVar1)" ( identifier , identifier , identifier ))) ;) (if_statement "if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }" if (parenthesized_expression "(uVar1 + (int)DAT_00089a2c == DAT_00089a28)" ( (binary_expression "uVar1 + (int)DAT_00089a2c == DAT_00089a28" (binary_expression "uVar1 + (int)DAT_00089a2c" identifier + (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }" { (expression_statement "DAT_00089a48 = DAT_00089a48 | 2;" (assignment_expression "DAT_00089a48 = DAT_00089a48 | 2" identifier = (binary_expression "DAT_00089a48 | 2" identifier | number_literal)) ;) })) (expression_statement "DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);" (assignment_expression "DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" identifier = (cast_expression "(void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" ( (binary_expression "uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38" (binary_expression "uVar1 + (int)DAT_00089a2c + DAT_00089a38" (binary_expression "uVar1 + (int)DAT_00089a2c" identifier + (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) & (unary_expression "~DAT_00089a38" ~ identifier)) )))) ;) (if_statement "if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }" if (parenthesized_expression "(DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24))" ( (binary_expression "DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)" (binary_expression "DAT_00089a30 - DAT_00089a24" identifier - identifier) < (call_expression "(uint)((int)DAT_00089a2c - DAT_00089a24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)DAT_00089a2c - DAT_00089a24)" ( (binary_expression "(int)DAT_00089a2c - DAT_00089a24" (cast_expression "(int)DAT_00089a2c" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }" { (expression_statement "DAT_00089a2c = (void *)DAT_00089a30;" (assignment_expression "DAT_00089a2c = (void *)DAT_00089a30" identifier = (cast_expression "(void *)DAT_00089a30" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "uVar1 = (uint)DAT_00089a2c;" (assignment_expression "uVar1 = (uint)DAT_00089a2c" identifier = (cast_expression "(uint)DAT_00089a2c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uint *)(iVar3 + 8) = DAT_00089a28;" (assignment_expression "*(uint *)(iVar3 + 8) = DAT_00089a28" (pointer_expression "*(uint *)(iVar3 + 8)" * (cast_expression "(uint *)(iVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "DAT_00089a28 = uVar1;" (assignment_expression "DAT_00089a28 = uVar1" identifier = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + IDENT) & (unary_expression ~ IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0001f270(char *param_1)\n\n{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0001f270(char *param_1)" (identifier "FUN_0001f270") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  size_t sVar2;\n  int iVar3;\n  \n  sVar2 = strlen(param_1);\n  uVar1 = sVar2 + 1;\n  iVar3 = FUN_0001d5f0();\n  *(undefined4 *)(iVar3 + 4) = 0x106;\n  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }\n  memcpy(DAT_00089a2c,param_1,uVar1);\n  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }\n  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);\n  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }\n  uVar1 = (uint)DAT_00089a2c;\n  *(uint *)(iVar3 + 8) = DAT_00089a28;\n  DAT_00089a28 = uVar1;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "sVar2 = strlen(param_1);" (assignment_expression "sVar2 = strlen(param_1)" (identifier "sVar2") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar1 = sVar2 + 1;" (assignment_expression "uVar1 = sVar2 + 1" (identifier "uVar1") (= "=") (binary_expression "sVar2 + 1" (identifier "sVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = FUN_0001d5f0();" (assignment_expression "iVar3 = FUN_0001d5f0()" (identifier "iVar3") (= "=") (call_expression "FUN_0001d5f0()" (identifier "FUN_0001d5f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 4) = 0x106;" (assignment_expression "*(undefined4 *)(iVar3 + 4) = 0x106" (pointer_expression "*(undefined4 *)(iVar3 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x106")) (; ";")) (if_statement "if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }" (if "if") (parenthesized_expression "(DAT_00089a30 - (int)DAT_00089a2c < uVar1)" (( "(") (binary_expression "DAT_00089a30 - (int)DAT_00089a2c < uVar1" (binary_expression "DAT_00089a30 - (int)DAT_00089a2c" (identifier "DAT_00089a30") (- "-") (cast_expression "(int)DAT_00089a2c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00089a2c"))) (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n    _obstack_newchunk(&DAT_00089a20,uVar1);\n  }" ({ "{") (expression_statement "_obstack_newchunk(&DAT_00089a20,uVar1);" (call_expression "_obstack_newchunk(&DAT_00089a20,uVar1)" (identifier "_obstack_newchunk") (argument_list "(&DAT_00089a20,uVar1)" (( "(") (pointer_expression "&DAT_00089a20" (& "&") (identifier "DAT_00089a20")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "memcpy(DAT_00089a2c,param_1,uVar1);" (call_expression "memcpy(DAT_00089a2c,param_1,uVar1)" (identifier "memcpy") (argument_list "(DAT_00089a2c,param_1,uVar1)" (( "(") (identifier "DAT_00089a2c") (, ",") (identifier "param_1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (if_statement "if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }" (if "if") (parenthesized_expression "(uVar1 + (int)DAT_00089a2c == DAT_00089a28)" (( "(") (binary_expression "uVar1 + (int)DAT_00089a2c == DAT_00089a28" (binary_expression "uVar1 + (int)DAT_00089a2c" (identifier "uVar1") (+ "+") (cast_expression "(int)DAT_00089a2c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00089a2c"))) (== "==") (identifier "DAT_00089a28")) () ")")) (compound_statement "{\n    DAT_00089a48 = DAT_00089a48 | 2;\n  }" ({ "{") (expression_statement "DAT_00089a48 = DAT_00089a48 | 2;" (assignment_expression "DAT_00089a48 = DAT_00089a48 | 2" (identifier "DAT_00089a48") (= "=") (binary_expression "DAT_00089a48 | 2" (identifier "DAT_00089a48") (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);" (assignment_expression "DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" (identifier "DAT_00089a2c") (= "=") (cast_expression "(void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38)" (( "(") (binary_expression "uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38" (binary_expression "uVar1 + (int)DAT_00089a2c + DAT_00089a38" (binary_expression "uVar1 + (int)DAT_00089a2c" (identifier "uVar1") (+ "+") (cast_expression "(int)DAT_00089a2c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00089a2c"))) (+ "+") (identifier "DAT_00089a38")) (& "&") (unary_expression "~DAT_00089a38" (~ "~") (identifier "DAT_00089a38"))) () ")")))) (; ";")) (if_statement "if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }" (if "if") (parenthesized_expression "(DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24))" (( "(") (binary_expression "DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)" (binary_expression "DAT_00089a30 - DAT_00089a24" (identifier "DAT_00089a30") (- "-") (identifier "DAT_00089a24")) (< "<") (call_expression "(uint)((int)DAT_00089a2c - DAT_00089a24)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)DAT_00089a2c - DAT_00089a24)" (( "(") (binary_expression "(int)DAT_00089a2c - DAT_00089a24" (cast_expression "(int)DAT_00089a2c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00089a2c")) (- "-") (identifier "DAT_00089a24")) () ")")))) () ")")) (compound_statement "{\n    DAT_00089a2c = (void *)DAT_00089a30;\n  }" ({ "{") (expression_statement "DAT_00089a2c = (void *)DAT_00089a30;" (assignment_expression "DAT_00089a2c = (void *)DAT_00089a30" (identifier "DAT_00089a2c") (= "=") (cast_expression "(void *)DAT_00089a30" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "DAT_00089a30"))) (; ";")) (} "}"))) (expression_statement "uVar1 = (uint)DAT_00089a2c;" (assignment_expression "uVar1 = (uint)DAT_00089a2c" (identifier "uVar1") (= "=") (cast_expression "(uint)DAT_00089a2c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "DAT_00089a2c"))) (; ";")) (expression_statement "*(uint *)(iVar3 + 8) = DAT_00089a28;" (assignment_expression "*(uint *)(iVar3 + 8) = DAT_00089a28" (pointer_expression "*(uint *)(iVar3 + 8)" (* "*") (cast_expression "(uint *)(iVar3 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "DAT_00089a28")) (; ";")) (expression_statement "DAT_00089a28 = uVar1;" (assignment_expression "DAT_00089a28 = uVar1" (identifier "DAT_00089a28") (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(char *name)

{
  type_1 var_4;
  char *pcVar1;
  size_t var_2;
  type_2 *pcVar3;
  
  var_2 = var_1(name);
  var_4 = var_2 + 1;
  pcVar3 = var_3();
  pcVar3->insn = 0x106;
  if ((type_1)((int)notes.chunk_limit - (int)notes.next_free) < var_4) {
    var_5(&notes,var_4);
  }
  var_6(notes.next_free,name,var_4);
  if (notes.next_free + var_4 == notes.object_base) {
    notes._40_1_ = notes._40_1_ | 2;
  }
  notes.next_free =
       (char *)((type_1)(notes.next_free + var_4 + notes.alignment_mask) & ~notes.alignment_mask);
  if ((type_1)((int)notes.chunk_limit - (int)notes.chunk) <
      (type_1)((int)notes.next_free - (int)notes.chunk)) {
    notes.next_free = notes.chunk_limit;
  }
  pcVar1 = notes.next_free;
  (pcVar3->u).sym_name = notes.object_base;
  notes.object_base = pcVar1;
  return;
}


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

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

void MASKED(char *param_1)

{
  uint uVar1;
  size_t sVar2;
  int iVar3;
  
  sVar2 = strlen(param_1);
  uVar1 = sVar2 + 1;
  iVar3 = FUN_0001d5f0();
  *(undefined4 *)(iVar3 + 4) = 0x106;
  if (DAT_00089a30 - (int)DAT_00089a2c < uVar1) {
    _obstack_newchunk(&DAT_00089a20,uVar1);
  }
  memcpy(DAT_00089a2c,param_1,uVar1);
  if (uVar1 + (int)DAT_00089a2c == DAT_00089a28) {
    DAT_00089a48 = DAT_00089a48 | 2;
  }
  DAT_00089a2c = (void *)(uVar1 + (int)DAT_00089a2c + DAT_00089a38 & ~DAT_00089a38);
  if (DAT_00089a30 - DAT_00089a24 < (uint)((int)DAT_00089a2c - DAT_00089a24)) {
    DAT_00089a2c = (void *)DAT_00089a30;
  }
  uVar1 = (uint)DAT_00089a2c;
  *(uint *)(iVar3 + 8) = DAT_00089a28;
  DAT_00089a28 = uVar1;
  return;
}

