
void * stat_alloc(size_t size)

{
  undefined *puVar1;
  void *pvVar2;
  void *pvVar3;
  uint uVar4;
  uint uVar5;
  
  puVar1 = PTR_DAT_001db8f8;
  uVar5 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);
  pvVar3 = (void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size);
  if (uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size) {
    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);
    pvVar2 = *(void **)(puVar1 + -0x3b1c);
    pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);
    uVar5 = *(uint *)(puVar1 + -0x3b14);
    if (pvVar3 != pvVar2) goto LAB_0002668c;
  }
  else {
    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);
    if (pvVar3 != pvVar2) goto LAB_0002668c;
  }
  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;
LAB_0002668c:
  uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);
  *(uint *)(puVar1 + -0x3b18) = uVar4;
  if (uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20)) {
    *(uint *)(puVar1 + -0x3b18) = uVar5;
    uVar4 = uVar5;
  }
  *(uint *)(puVar1 + -0x3b1c) = uVar4;
  return pvVar2;
}



void stat_alloc(uint param_1)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  puVar1 = PTR_DAT_001db8f8;
  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);
  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;
  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {
    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);
    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;
    uVar4 = *(uint *)(puVar1 + -0x3b14);
    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;
  }
  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;
  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;
LAB_0002668c:
  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);
  *(uint *)(puVar1 + -0x3b18) = uVar3;
  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {
    *(uint *)(puVar1 + -0x3b18) = uVar4;
    uVar3 = uVar4;
  }
  *(uint *)(puVar1 + -0x3b1c) = uVar3;
  return;
}


lui gp,0x1c
addiu gp,gp,-0x2d6c
addu gp,gp,t9
addiu sp,sp,-0x28
sw s0,0x1c(sp)
lw s0,-0x7fd8(gp)
sw s1,0x20(sp)
or s1,a0,zero
sw gp,0x10(sp)
addiu s0,s0,-0x3b24
sw ra,0x24(sp)
lw a2,0x10(s0)
lw a0,0xc(s0)
subu v0,a2,a0
sltu v0,v0,s1
bne v0,zero,0x000266d4
_addu a0,a0,s1
lw v0,0x8(s0)
beq a0,v0,0x000266f8
_nop
lw a1,0x18(s0)
lw v1,0x4(s0)
addu a0,a0,a1
nor a1,zero,a1
and a0,a0,a1
subu a1,a0,v1
subu v1,a2,v1
sltu v1,v1,a1
beq v1,zero,0x000266bc
_sw a0,0xc(s0)
sw a2,0xc(s0)
or a0,a2,zero
lw ra,0x24(sp)
lw s1,0x20(sp)
sw a0,0x8(s0)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x7824(gp)
or a0,s0,zero
jalr t9
_or a1,s1,zero
lw a0,0xc(s0)
lw v0,0x8(s0)
addu a0,a0,s1
bne a0,v0,0x0002668c
_lw a2,0x10(s0)
lbu v1,0x28(s0)
li a1,0x1
ins v1,a1,0x6,0x1
b 0x0002668c
_sb v1,0x28(s0)
(translation_unit "void stat_alloc(uint param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}\n\n" (function_definition "void stat_alloc(uint param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}" primitive_type (function_declarator "stat_alloc(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_001db8f8;" (assignment_expression "puVar1 = PTR_DAT_001db8f8" identifier = identifier) ;) (expression_statement "uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);" (assignment_expression "uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14)" identifier = (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3b14)" * (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3b14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b14)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;" (assignment_expression "iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1" identifier = (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b18" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" if (parenthesized_expression "(uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1)" ( (binary_expression "uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1" (binary_expression "uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18)" identifier - (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b18" identifier + number_literal) ))))) < identifier) )) (compound_statement "{\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }" { (expression_statement "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);" (call_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1)" (parenthesized_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)" ( (pointer_expression "*(code *)PTR__obstack_newchunk_001dc0ac" * (cast_expression "(code *)PTR__obstack_newchunk_001dc0ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_001db8f8 + -0x3b24,param_1)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b24" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;" (assignment_expression "iVar2 = *(int *)(puVar1 + -0x3b18) + param_1" identifier = (binary_expression "*(int *)(puVar1 + -0x3b18) + param_1" (pointer_expression "*(int *)(puVar1 + -0x3b18)" * (cast_expression "(int *)(puVar1 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) + identifier)) ;) (expression_statement "uVar4 = *(uint *)(puVar1 + -0x3b14);" (assignment_expression "uVar4 = *(uint *)(puVar1 + -0x3b14)" identifier = (pointer_expression "*(uint *)(puVar1 + -0x3b14)" * (cast_expression "(uint *)(puVar1 + -0x3b14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b14)" ( (binary_expression "puVar1 + -0x3b14" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;" if (parenthesized_expression "(iVar2 != *(int *)(puVar1 + -0x3b1c))" ( (binary_expression "iVar2 != *(int *)(puVar1 + -0x3b1c)" identifier != (pointer_expression "*(int *)(puVar1 + -0x3b1c)" * (cast_expression "(int *)(puVar1 + -0x3b1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b1c)" ( (binary_expression "puVar1 + -0x3b1c" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002668c;" goto statement_identifier ;)) }) (else_clause "else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" else (if_statement "if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" if (parenthesized_expression "(iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c))" ( (binary_expression "iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)" identifier != (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b1c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b1c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b1c" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002668c;" goto statement_identifier ;)))) (expression_statement "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;" (assignment_expression "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40" (subscript_expression "puVar1[-0x3afc]" identifier [ number_literal ]) = (binary_expression "puVar1[-0x3afc] & 0xbf | 0x40" (binary_expression "puVar1[-0x3afc] & 0xbf" (subscript_expression "puVar1[-0x3afc]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) (labeled_statement "LAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" statement_identifier : (expression_statement "uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" (assignment_expression "uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" identifier = (binary_expression "iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" (binary_expression "iVar2 + *(uint *)(puVar1 + -0x3b0c)" identifier + (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" * (cast_expression "(uint *)(puVar1 + -0x3b0c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b0c)" ( (binary_expression "puVar1 + -0x3b0c" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(puVar1 + -0x3b0c)" ~ (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" * (cast_expression "(uint *)(puVar1 + -0x3b0c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b0c)" ( (binary_expression "puVar1 + -0x3b0c" identifier + number_literal) ))))))) ;)) (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar3;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar3" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" * (cast_expression "(uint *)(puVar1 + -0x3b18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }" if (parenthesized_expression "(uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20))" ( (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)" (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20)" identifier - (pointer_expression "*(int *)(puVar1 + -0x3b20)" * (cast_expression "(int *)(puVar1 + -0x3b20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b20)" ( (binary_expression "puVar1 + -0x3b20" identifier + number_literal) ))))) < (binary_expression "uVar3 - *(int *)(puVar1 + -0x3b20)" identifier - (pointer_expression "*(int *)(puVar1 + -0x3b20)" * (cast_expression "(int *)(puVar1 + -0x3b20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b20)" ( (binary_expression "puVar1 + -0x3b20" identifier + number_literal) )))))) )) (compound_statement "{\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }" { (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar4;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar4" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" * (cast_expression "(uint *)(puVar1 + -0x3b18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) })) (expression_statement "*(uint *)(puVar1 + -0x3b1c) = uVar3;" (assignment_expression "*(uint *)(puVar1 + -0x3b1c) = uVar3" (pointer_expression "*(uint *)(puVar1 + -0x3b1c)" * (cast_expression "(uint *)(puVar1 + -0x3b1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b1c)" ( (binary_expression "puVar1 + -0x3b1c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void * stat_alloc(size_t size)\n\n{\n  undefined *puVar1;\n  void *pvVar2;\n  void *pvVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar5 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  pvVar3 = (void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size);\n  if (uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);\n    pvVar2 = *(void **)(puVar1 + -0x3b1c);\n    pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);\n    uVar5 = *(uint *)(puVar1 + -0x3b14);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  else {\n    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar4;\n  if (uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar5;\n    uVar4 = uVar5;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar4;\n  return pvVar2;\n}\n\n" (function_definition "void * stat_alloc(size_t size)\n\n{\n  undefined *puVar1;\n  void *pvVar2;\n  void *pvVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar5 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  pvVar3 = (void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size);\n  if (uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);\n    pvVar2 = *(void **)(puVar1 + -0x3b1c);\n    pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);\n    uVar5 = *(uint *)(puVar1 + -0x3b14);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  else {\n    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar4;\n  if (uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar5;\n    uVar4 = uVar5;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar4;\n  return pvVar2;\n}" primitive_type (pointer_declarator "* stat_alloc(size_t size)" * (function_declarator "stat_alloc(size_t size)" identifier (parameter_list "(size_t size)" ( (parameter_declaration "size_t size" primitive_type identifier) )))) (compound_statement "{\n  undefined *puVar1;\n  void *pvVar2;\n  void *pvVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar5 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  pvVar3 = (void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size);\n  if (uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);\n    pvVar2 = *(void **)(puVar1 + -0x3b1c);\n    pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);\n    uVar5 = *(uint *)(puVar1 + -0x3b14);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  else {\n    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar4;\n  if (uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar5;\n    uVar4 = uVar5;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar4;\n  return pvVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_001db8f8;" (assignment_expression "puVar1 = PTR_DAT_001db8f8" identifier = identifier) ;) (expression_statement "uVar5 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);" (assignment_expression "uVar5 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14)" identifier = (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3b14)" * (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3b14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b14)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b14" identifier + number_literal) ))))) ;) (expression_statement "pvVar3 = (void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size);" (assignment_expression "pvVar3 = (void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size)" identifier = (cast_expression "(void *)(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size)" ( (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18) + size" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b18" identifier + number_literal) )))) + identifier) )))) ;) (if_statement "if (uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);\n    pvVar2 = *(void **)(puVar1 + -0x3b1c);\n    pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);\n    uVar5 = *(uint *)(puVar1 + -0x3b14);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }\n  else {\n    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }" if (parenthesized_expression "(uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size)" ( (binary_expression "uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < size" (binary_expression "uVar5 - *(int *)(PTR_DAT_001db8f8 + -0x3b18)" identifier - (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b18" identifier + number_literal) ))))) < identifier) )) (compound_statement "{\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);\n    pvVar2 = *(void **)(puVar1 + -0x3b1c);\n    pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);\n    uVar5 = *(uint *)(puVar1 + -0x3b14);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }" { (expression_statement "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size);" (call_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,size)" (parenthesized_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)" ( (pointer_expression "*(code *)PTR__obstack_newchunk_001dc0ac" * (cast_expression "(code *)PTR__obstack_newchunk_001dc0ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_001db8f8 + -0x3b24,size)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b24" identifier + number_literal) , identifier ))) ;) (expression_statement "pvVar2 = *(void **)(puVar1 + -0x3b1c);" (assignment_expression "pvVar2 = *(void **)(puVar1 + -0x3b1c)" identifier = (pointer_expression "*(void **)(puVar1 + -0x3b1c)" * (cast_expression "(void **)(puVar1 + -0x3b1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + -0x3b1c)" ( (binary_expression "puVar1 + -0x3b1c" identifier + number_literal) ))))) ;) (expression_statement "pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size);" (assignment_expression "pvVar3 = (void *)(*(int *)(puVar1 + -0x3b18) + size)" identifier = (cast_expression "(void *)(*(int *)(puVar1 + -0x3b18) + size)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar1 + -0x3b18) + size)" ( (binary_expression "*(int *)(puVar1 + -0x3b18) + size" (pointer_expression "*(int *)(puVar1 + -0x3b18)" * (cast_expression "(int *)(puVar1 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "uVar5 = *(uint *)(puVar1 + -0x3b14);" (assignment_expression "uVar5 = *(uint *)(puVar1 + -0x3b14)" identifier = (pointer_expression "*(uint *)(puVar1 + -0x3b14)" * (cast_expression "(uint *)(puVar1 + -0x3b14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b14)" ( (binary_expression "puVar1 + -0x3b14" identifier + number_literal) ))))) ;) (if_statement "if (pvVar3 != pvVar2) goto LAB_0002668c;" if (parenthesized_expression "(pvVar3 != pvVar2)" ( (binary_expression "pvVar3 != pvVar2" identifier != identifier) )) (goto_statement "goto LAB_0002668c;" goto statement_identifier ;)) }) (else_clause "else {\n    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }" else (compound_statement "{\n    pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);\n    if (pvVar3 != pvVar2) goto LAB_0002668c;\n  }" { (expression_statement "pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c);" (assignment_expression "pvVar2 = *(void **)(PTR_DAT_001db8f8 + -0x3b1c)" identifier = (pointer_expression "*(void **)(PTR_DAT_001db8f8 + -0x3b1c)" * (cast_expression "(void **)(PTR_DAT_001db8f8 + -0x3b1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b1c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b1c" identifier + number_literal) ))))) ;) (if_statement "if (pvVar3 != pvVar2) goto LAB_0002668c;" if (parenthesized_expression "(pvVar3 != pvVar2)" ( (binary_expression "pvVar3 != pvVar2" identifier != identifier) )) (goto_statement "goto LAB_0002668c;" goto statement_identifier ;)) }))) (expression_statement "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;" (assignment_expression "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40" (subscript_expression "puVar1[-0x3afc]" identifier [ number_literal ]) = (binary_expression "puVar1[-0x3afc] & 0xbf | 0x40" (binary_expression "puVar1[-0x3afc] & 0xbf" (subscript_expression "puVar1[-0x3afc]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) (labeled_statement "LAB_0002668c:\n  uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" statement_identifier : (expression_statement "uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" (assignment_expression "uVar4 = (int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" identifier = (binary_expression "(int)pvVar3 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" (binary_expression "(int)pvVar3 + *(uint *)(puVar1 + -0x3b0c)" (cast_expression "(int)pvVar3" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" * (cast_expression "(uint *)(puVar1 + -0x3b0c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b0c)" ( (binary_expression "puVar1 + -0x3b0c" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(puVar1 + -0x3b0c)" ~ (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" * (cast_expression "(uint *)(puVar1 + -0x3b0c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b0c)" ( (binary_expression "puVar1 + -0x3b0c" identifier + number_literal) ))))))) ;)) (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar4;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar4" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" * (cast_expression "(uint *)(puVar1 + -0x3b18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar5;\n    uVar4 = uVar5;\n  }" if (parenthesized_expression "(uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20))" ( (binary_expression "uVar5 - *(int *)(puVar1 + -0x3b20) < uVar4 - *(int *)(puVar1 + -0x3b20)" (binary_expression "uVar5 - *(int *)(puVar1 + -0x3b20)" identifier - (pointer_expression "*(int *)(puVar1 + -0x3b20)" * (cast_expression "(int *)(puVar1 + -0x3b20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b20)" ( (binary_expression "puVar1 + -0x3b20" identifier + number_literal) ))))) < (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20)" identifier - (pointer_expression "*(int *)(puVar1 + -0x3b20)" * (cast_expression "(int *)(puVar1 + -0x3b20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b20)" ( (binary_expression "puVar1 + -0x3b20" identifier + number_literal) )))))) )) (compound_statement "{\n    *(uint *)(puVar1 + -0x3b18) = uVar5;\n    uVar4 = uVar5;\n  }" { (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar5;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar5" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" * (cast_expression "(uint *)(puVar1 + -0x3b18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) })) (expression_statement "*(uint *)(puVar1 + -0x3b1c) = uVar4;" (assignment_expression "*(uint *)(puVar1 + -0x3b1c) = uVar4" (pointer_expression "*(uint *)(puVar1 + -0x3b1c)" * (cast_expression "(uint *)(puVar1 + -0x3b1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b1c)" ( (binary_expression "puVar1 + -0x3b1c" identifier + number_literal) )))) = identifier) ;) (return_statement "return pvVar2;" return identifier ;) })))
(translation_unit "void stat_alloc(uint param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}\n\n" (function_definition "void stat_alloc(uint param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}" primitive_type (function_declarator "stat_alloc(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_001db8f8;" (assignment_expression "puVar1 = PTR_DAT_001db8f8" identifier = identifier) ;) (expression_statement "uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);" (assignment_expression "uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14)" identifier = (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3b14)" * (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3b14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b14)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;" (assignment_expression "iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1" identifier = (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b18" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" if (parenthesized_expression "(uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1)" ( (binary_expression "uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1" (binary_expression "uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18)" identifier - (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b18" identifier + number_literal) ))))) < identifier) )) (compound_statement "{\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }" { (expression_statement "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);" (call_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1)" (parenthesized_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)" ( (pointer_expression "*(code *)PTR__obstack_newchunk_001dc0ac" * (cast_expression "(code *)PTR__obstack_newchunk_001dc0ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_001db8f8 + -0x3b24,param_1)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b24" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;" (assignment_expression "iVar2 = *(int *)(puVar1 + -0x3b18) + param_1" identifier = (binary_expression "*(int *)(puVar1 + -0x3b18) + param_1" (pointer_expression "*(int *)(puVar1 + -0x3b18)" * (cast_expression "(int *)(puVar1 + -0x3b18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) + identifier)) ;) (expression_statement "uVar4 = *(uint *)(puVar1 + -0x3b14);" (assignment_expression "uVar4 = *(uint *)(puVar1 + -0x3b14)" identifier = (pointer_expression "*(uint *)(puVar1 + -0x3b14)" * (cast_expression "(uint *)(puVar1 + -0x3b14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b14)" ( (binary_expression "puVar1 + -0x3b14" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;" if (parenthesized_expression "(iVar2 != *(int *)(puVar1 + -0x3b1c))" ( (binary_expression "iVar2 != *(int *)(puVar1 + -0x3b1c)" identifier != (pointer_expression "*(int *)(puVar1 + -0x3b1c)" * (cast_expression "(int *)(puVar1 + -0x3b1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b1c)" ( (binary_expression "puVar1 + -0x3b1c" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002668c;" goto statement_identifier ;)) }) (else_clause "else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" else (if_statement "if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" if (parenthesized_expression "(iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c))" ( (binary_expression "iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)" identifier != (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b1c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b1c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3b1c" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002668c;" goto statement_identifier ;)))) (expression_statement "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;" (assignment_expression "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40" (subscript_expression "puVar1[-0x3afc]" identifier [ number_literal ]) = (binary_expression "puVar1[-0x3afc] & 0xbf | 0x40" (binary_expression "puVar1[-0x3afc] & 0xbf" (subscript_expression "puVar1[-0x3afc]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) (labeled_statement "LAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" statement_identifier : (expression_statement "uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" (assignment_expression "uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" identifier = (binary_expression "iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" (binary_expression "iVar2 + *(uint *)(puVar1 + -0x3b0c)" identifier + (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" * (cast_expression "(uint *)(puVar1 + -0x3b0c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b0c)" ( (binary_expression "puVar1 + -0x3b0c" identifier + number_literal) ))))) & (unary_expression "~*(uint *)(puVar1 + -0x3b0c)" ~ (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" * (cast_expression "(uint *)(puVar1 + -0x3b0c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b0c)" ( (binary_expression "puVar1 + -0x3b0c" identifier + number_literal) ))))))) ;)) (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar3;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar3" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" * (cast_expression "(uint *)(puVar1 + -0x3b18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }" if (parenthesized_expression "(uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20))" ( (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)" (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20)" identifier - (pointer_expression "*(int *)(puVar1 + -0x3b20)" * (cast_expression "(int *)(puVar1 + -0x3b20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b20)" ( (binary_expression "puVar1 + -0x3b20" identifier + number_literal) ))))) < (binary_expression "uVar3 - *(int *)(puVar1 + -0x3b20)" identifier - (pointer_expression "*(int *)(puVar1 + -0x3b20)" * (cast_expression "(int *)(puVar1 + -0x3b20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b20)" ( (binary_expression "puVar1 + -0x3b20" identifier + number_literal) )))))) )) (compound_statement "{\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }" { (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar4;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar4" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" * (cast_expression "(uint *)(puVar1 + -0x3b18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b18)" ( (binary_expression "puVar1 + -0x3b18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) })) (expression_statement "*(uint *)(puVar1 + -0x3b1c) = uVar3;" (assignment_expression "*(uint *)(puVar1 + -0x3b1c) = uVar3" (pointer_expression "*(uint *)(puVar1 + -0x3b1c)" * (cast_expression "(uint *)(puVar1 + -0x3b1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x3b1c)" ( (binary_expression "puVar1 + -0x3b1c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) | LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (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) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void stat_alloc(uint param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}" (primitive_type "void") (function_declarator "stat_alloc(uint param_1)" (identifier "stat_alloc") (parameter_list "(uint param_1)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  puVar1 = PTR_DAT_001db8f8;\n  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);\n  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;\n  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;\n  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;\nLAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);\n  *(uint *)(puVar1 + -0x3b18) = uVar3;\n  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }\n  *(uint *)(puVar1 + -0x3b1c) = uVar3;\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (expression_statement "puVar1 = PTR_DAT_001db8f8;" (assignment_expression "puVar1 = PTR_DAT_001db8f8" (identifier "puVar1") (= "=") (identifier "PTR_DAT_001db8f8")) (; ";")) (expression_statement "uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);" (assignment_expression "uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(PTR_DAT_001db8f8 + -0x3b14)" (* "*") (cast_expression "(uint *)(PTR_DAT_001db8f8 + -0x3b14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b14)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3b14" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3b14")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;" (assignment_expression "iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1" (identifier "iVar2") (= "=") (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3b18" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3b18")) () ")")))) (+ "+") (identifier "param_1"))) (; ";")) (if_statement "if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }\n  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" (if "if") (parenthesized_expression "(uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1)" (( "(") (binary_expression "uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1" (binary_expression "uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18)" (identifier "uVar4") (- "-") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b18)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b18)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3b18" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3b18")) () ")"))))) (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);\n    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;\n    uVar4 = *(uint *)(puVar1 + -0x3b14);\n    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;\n  }" ({ "{") (expression_statement "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);" (call_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1)" (parenthesized_expression "(*(code *)PTR__obstack_newchunk_001dc0ac)" (( "(") (pointer_expression "*(code *)PTR__obstack_newchunk_001dc0ac" (* "*") (cast_expression "(code *)PTR__obstack_newchunk_001dc0ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__obstack_newchunk_001dc0ac"))) () ")")) (argument_list "(PTR_DAT_001db8f8 + -0x3b24,param_1)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3b24" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3b24")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;" (assignment_expression "iVar2 = *(int *)(puVar1 + -0x3b18) + param_1" (identifier "iVar2") (= "=") (binary_expression "*(int *)(puVar1 + -0x3b18) + param_1" (pointer_expression "*(int *)(puVar1 + -0x3b18)" (* "*") (cast_expression "(int *)(puVar1 + -0x3b18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b18)" (( "(") (binary_expression "puVar1 + -0x3b18" (identifier "puVar1") (+ "+") (number_literal "-0x3b18")) () ")")))) (+ "+") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = *(uint *)(puVar1 + -0x3b14);" (assignment_expression "uVar4 = *(uint *)(puVar1 + -0x3b14)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(puVar1 + -0x3b14)" (* "*") (cast_expression "(uint *)(puVar1 + -0x3b14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b14)" (( "(") (binary_expression "puVar1 + -0x3b14" (identifier "puVar1") (+ "+") (number_literal "-0x3b14")) () ")"))))) (; ";")) (if_statement "if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;" (if "if") (parenthesized_expression "(iVar2 != *(int *)(puVar1 + -0x3b1c))" (( "(") (binary_expression "iVar2 != *(int *)(puVar1 + -0x3b1c)" (identifier "iVar2") (!= "!=") (pointer_expression "*(int *)(puVar1 + -0x3b1c)" (* "*") (cast_expression "(int *)(puVar1 + -0x3b1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b1c)" (( "(") (binary_expression "puVar1 + -0x3b1c" (identifier "puVar1") (+ "+") (number_literal "-0x3b1c")) () ")"))))) () ")")) (goto_statement "goto LAB_0002668c;" (goto "goto") (statement_identifier "LAB_0002668c") (; ";"))) (} "}")) (else_clause "else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" (else "else") (if_statement "if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;" (if "if") (parenthesized_expression "(iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c))" (( "(") (binary_expression "iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)" (identifier "iVar2") (!= "!=") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3b1c)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3b1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3b1c)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3b1c" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3b1c")) () ")"))))) () ")")) (goto_statement "goto LAB_0002668c;" (goto "goto") (statement_identifier "LAB_0002668c") (; ";"))))) (expression_statement "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;" (assignment_expression "puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40" (subscript_expression "puVar1[-0x3afc]" (identifier "puVar1") ([ "[") (number_literal "-0x3afc") (] "]")) (= "=") (binary_expression "puVar1[-0x3afc] & 0xbf | 0x40" (binary_expression "puVar1[-0x3afc] & 0xbf" (subscript_expression "puVar1[-0x3afc]" (identifier "puVar1") ([ "[") (number_literal "-0x3afc") (] "]")) (& "&") (number_literal "0xbf")) (| "|") (number_literal "0x40"))) (; ";")) (labeled_statement "LAB_0002668c:\n  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" (statement_identifier "LAB_0002668c") (: ":") (expression_statement "uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);" (assignment_expression "uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" (identifier "uVar3") (= "=") (binary_expression "iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c)" (binary_expression "iVar2 + *(uint *)(puVar1 + -0x3b0c)" (identifier "iVar2") (+ "+") (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" (* "*") (cast_expression "(uint *)(puVar1 + -0x3b0c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b0c)" (( "(") (binary_expression "puVar1 + -0x3b0c" (identifier "puVar1") (+ "+") (number_literal "-0x3b0c")) () ")"))))) (& "&") (unary_expression "~*(uint *)(puVar1 + -0x3b0c)" (~ "~") (pointer_expression "*(uint *)(puVar1 + -0x3b0c)" (* "*") (cast_expression "(uint *)(puVar1 + -0x3b0c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b0c)" (( "(") (binary_expression "puVar1 + -0x3b0c" (identifier "puVar1") (+ "+") (number_literal "-0x3b0c")) () ")"))))))) (; ";"))) (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar3;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar3" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" (* "*") (cast_expression "(uint *)(puVar1 + -0x3b18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b18)" (( "(") (binary_expression "puVar1 + -0x3b18" (identifier "puVar1") (+ "+") (number_literal "-0x3b18")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }" (if "if") (parenthesized_expression "(uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20))" (( "(") (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)" (binary_expression "uVar4 - *(int *)(puVar1 + -0x3b20)" (identifier "uVar4") (- "-") (pointer_expression "*(int *)(puVar1 + -0x3b20)" (* "*") (cast_expression "(int *)(puVar1 + -0x3b20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b20)" (( "(") (binary_expression "puVar1 + -0x3b20" (identifier "puVar1") (+ "+") (number_literal "-0x3b20")) () ")"))))) (< "<") (binary_expression "uVar3 - *(int *)(puVar1 + -0x3b20)" (identifier "uVar3") (- "-") (pointer_expression "*(int *)(puVar1 + -0x3b20)" (* "*") (cast_expression "(int *)(puVar1 + -0x3b20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b20)" (( "(") (binary_expression "puVar1 + -0x3b20" (identifier "puVar1") (+ "+") (number_literal "-0x3b20")) () ")")))))) () ")")) (compound_statement "{\n    *(uint *)(puVar1 + -0x3b18) = uVar4;\n    uVar3 = uVar4;\n  }" ({ "{") (expression_statement "*(uint *)(puVar1 + -0x3b18) = uVar4;" (assignment_expression "*(uint *)(puVar1 + -0x3b18) = uVar4" (pointer_expression "*(uint *)(puVar1 + -0x3b18)" (* "*") (cast_expression "(uint *)(puVar1 + -0x3b18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b18)" (( "(") (binary_expression "puVar1 + -0x3b18" (identifier "puVar1") (+ "+") (number_literal "-0x3b18")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" (identifier "uVar3") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar1 + -0x3b1c) = uVar3;" (assignment_expression "*(uint *)(puVar1 + -0x3b1c) = uVar3" (pointer_expression "*(uint *)(puVar1 + -0x3b1c)" (* "*") (cast_expression "(uint *)(puVar1 + -0x3b1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x3b1c)" (( "(") (binary_expression "puVar1 + -0x3b1c" (identifier "puVar1") (+ "+") (number_literal "-0x3b1c")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void * function_1(size_t var_2)

{
  type_1 *var_4;
  void *var_6;
  void *var_5;
  type_2 var_7;
  type_2 var_3;
  
  var_4 = var_1;
  var_3 = *(type_2 *)(var_1 + -0x3b14);
  var_5 = (void *)(*(int *)(var_1 + -0x3b18) + var_2);
  if (var_3 - *(int *)(var_1 + -0x3b18) < var_2) {
    (*(type_3 *)PTR__obstack_newchunk_001dc0ac)(var_1 + -0x3b24,var_2);
    var_6 = *(void **)(var_4 + -0x3b1c);
    var_5 = (void *)(*(int *)(var_4 + -0x3b18) + var_2);
    var_3 = *(type_2 *)(var_4 + -0x3b14);
    if (var_5 != var_6) goto LAB_0002668c;
  }
  else {
    var_6 = *(void **)(var_1 + -0x3b1c);
    if (var_5 != var_6) goto LAB_0002668c;
  }
  var_4[-0x3afc] = var_4[-0x3afc] & 0xbf | 0x40;
LAB_0002668c:
  var_7 = (int)var_5 + *(type_2 *)(var_4 + -0x3b0c) & ~*(type_2 *)(var_4 + -0x3b0c);
  *(type_2 *)(var_4 + -0x3b18) = var_7;
  if (var_3 - *(int *)(var_4 + -0x3b20) < var_7 - *(int *)(var_4 + -0x3b20)) {
    *(type_2 *)(var_4 + -0x3b18) = var_3;
    var_7 = var_3;
  }
  *(type_2 *)(var_4 + -0x3b1c) = var_7;
  return var_6;
}


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

void MASKED(uint param_1)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  puVar1 = PTR_DAT_001db8f8;
  uVar4 = *(uint *)(PTR_DAT_001db8f8 + -0x3b14);
  iVar2 = *(int *)(PTR_DAT_001db8f8 + -0x3b18) + param_1;
  if (uVar4 - *(int *)(PTR_DAT_001db8f8 + -0x3b18) < param_1) {
    (*(code *)PTR__obstack_newchunk_001dc0ac)(PTR_DAT_001db8f8 + -0x3b24,param_1);
    iVar2 = *(int *)(puVar1 + -0x3b18) + param_1;
    uVar4 = *(uint *)(puVar1 + -0x3b14);
    if (iVar2 != *(int *)(puVar1 + -0x3b1c)) goto LAB_0002668c;
  }
  else if (iVar2 != *(int *)(PTR_DAT_001db8f8 + -0x3b1c)) goto LAB_0002668c;
  puVar1[-0x3afc] = puVar1[-0x3afc] & 0xbf | 0x40;
LAB_0002668c:
  uVar3 = iVar2 + *(uint *)(puVar1 + -0x3b0c) & ~*(uint *)(puVar1 + -0x3b0c);
  *(uint *)(puVar1 + -0x3b18) = uVar3;
  if (uVar4 - *(int *)(puVar1 + -0x3b20) < uVar3 - *(int *)(puVar1 + -0x3b20)) {
    *(uint *)(puVar1 + -0x3b18) = uVar4;
    uVar3 = uVar4;
  }
  *(uint *)(puVar1 + -0x3b1c) = uVar3;
  return;
}

