
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void _obstack_newchunk(obstack *h,size_t length)

{
  _obstack_chunk *old_chunk;
  code *pcVar1;
  _obstack_chunk *p_Var2;
  ulong size;
  char *__dest;
  ulong uVar3;
  ulong __n;
  
  __n = (long)h->next_free - (long)h->object_base;
  old_chunk = h->chunk;
  uVar3 = length + __n + h->alignment_mask;
  if ((!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask))) {
    size = uVar3 + 100 + (__n >> 3);
    if (uVar3 <= h->chunk_size) {
      uVar3 = h->chunk_size;
    }
    if (size <= uVar3) {
      size = uVar3;
    }
    p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);
    if (p_Var2 != (_obstack_chunk *)0x0) {
      h->chunk = p_Var2;
      p_Var2->prev = old_chunk;
      h->chunk_limit = p_Var2->contents + (size - 0x10);
      p_Var2->limit = p_Var2->contents + (size - 0x10);
      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);
      memcpy(__dest,h->object_base,__n);
      if (((h->field_0x50 & 2) == 0) &&
         (h->object_base ==
          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {
        p_Var2->prev = old_chunk->prev;
        call_freefun(h,old_chunk);
      }
      h->object_base = __dest;
      h->next_free = __dest + __n;
      h->field_0x50 = h->field_0x50 & 0xfd;
      return;
    }
  }
  (*obstack_alloc_failed_handler)();
  h->chunk = (_obstack_chunk *)0x0;
                    /* WARNING: Does not return */
  pcVar1 = (code *)invalidInstructionException();
  _DAT_00000008 = old_chunk;
  (*pcVar1)();
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void _obstack_newchunk(ulong *param_1,ulong param_2)

{
  ulong uVar1;
  code *pcVar2;
  ulong *puVar3;
  ulong uVar4;
  void *__dest;
  ulong uVar5;
  ulong __n;
  
  __n = param_1[3] - param_1[2];
  uVar1 = param_1[1];
  uVar5 = param_2 + __n + param_1[6];
  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {
    uVar4 = uVar5 + 100 + (__n >> 3);
    if (uVar5 <= *param_1) {
      uVar5 = *param_1;
    }
    if (uVar4 <= uVar5) {
      uVar4 = uVar5;
    }
    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);
    if (puVar3 != (ulong *)0x0) {
      param_1[1] = (ulong)puVar3;
      puVar3[1] = uVar1;
      param_1[4] = (long)puVar3 + uVar4;
      *puVar3 = (long)puVar3 + uVar4;
      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);
      memcpy(__dest,(void *)param_1[2],__n);
      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {
        puVar3[1] = *(ulong *)(uVar1 + 8);
        FUN_00132fe0(param_1,uVar1);
      }
      param_1[2] = (ulong)__dest;
      param_1[3] = __n + (long)__dest;
      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;
      return;
    }
  }
  (*(code *)obstack_alloc_failed_handler)();
  param_1[1] = 0;
                    /* WARNING: Does not return */
  pcVar2 = (code *)invalidInstructionException();
  _DAT_00000008 = uVar1;
  (*pcVar2)();
}


PUSH R14
XOR EAX,EAX
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV R12,qword ptr [RDI + 0x18]
MOV RBX,RDI
SUB R12,qword ptr [RDI + 0x10]
MOV R13,qword ptr [RDI + 0x8]
ADD RSI,R12
SETC AL
ADD RSI,qword ptr [RDI + 0x30]
SETC DL
TEST RAX,RAX
JNZ 0x00133073
MOVZX EDX,DL
TEST RDX,RDX
JZ 0x00133090
LEA RAX,[0x1a9c78]
CALL qword ptr [RAX]
MOV qword ptr [RBX + 0x8],0x0
MOV qword ptr [0x00000008],R13
UD2
MOV RAX,R12
SHR RAX,0x3
CMP qword ptr [RDI],RSI
LEA RBP,[RSI + RAX*0x1 + 0x64]
CMOVNC RSI,qword ptr [RDI]
CMP RSI,RBP
CMOVNC RBP,RSI
MOV RSI,RBP
CALL 0x00132f20
MOV R14,RAX
TEST RAX,RAX
JZ 0x00133073
LEA RSI,[RAX + RBP*0x1]
MOV qword ptr [RBX + 0x8],RAX
MOV RDX,R12
MOV qword ptr [RAX + 0x8],R13
MOV qword ptr [RBX + 0x20],RSI
MOV qword ptr [RAX],RSI
MOV RAX,qword ptr [RBX + 0x30]
MOV RSI,qword ptr [RBX + 0x10]
LEA RBP,[R14 + RAX*0x1 + 0x10]
NOT RAX
AND RBP,RAX
MOV RDI,RBP
CALL 0x001096e0
TEST byte ptr [RBX + 0x50],0x2
JNZ 0x00133106
MOV RAX,qword ptr [RBX + 0x30]
LEA RDX,[R13 + RAX*0x1 + 0x10]
NOT RAX
AND RAX,RDX
CMP qword ptr [RBX + 0x10],RAX
JZ 0x00133120
ADD R12,RBP
MOV qword ptr [RBX + 0x10],RBP
MOV qword ptr [RBX + 0x18],R12
AND byte ptr [RBX + 0x50],0xfd
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RAX,qword ptr [R13 + 0x8]
MOV RSI,R13
MOV RDI,RBX
MOV qword ptr [R14 + 0x8],RAX
CALL 0x00132fe0
JMP 0x00133106
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid _obstack_newchunk(ulong *param_1,ulong param_2)\n\n{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    /* WARNING: Does not return */\n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}\n\n" comment (function_definition "void _obstack_newchunk(ulong *param_1,ulong param_2)\n\n{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    /* WARNING: Does not return */\n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}" primitive_type (function_declarator "_obstack_newchunk(ulong *param_1,ulong param_2)" identifier (parameter_list "(ulong *param_1,ulong param_2)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    /* WARNING: Does not return */\n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (expression_statement "__n = param_1[3] - param_1[2];" (assignment_expression "__n = param_1[3] - param_1[2]" identifier = (binary_expression "param_1[3] - param_1[2]" (subscript_expression "param_1[3]" identifier [ number_literal ]) - (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_2 + __n + param_1[6];" (assignment_expression "uVar5 = param_2 + __n + param_1[6]" identifier = (binary_expression "param_2 + __n + param_1[6]" (binary_expression "param_2 + __n" identifier + identifier) + (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (if_statement "if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }" if (parenthesized_expression "((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6])))" ( (binary_expression "(!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))" (parenthesized_expression "(!CARRY8(param_2,__n))" ( (unary_expression "!CARRY8(param_2,__n)" ! (call_expression "CARRY8(param_2,__n)" identifier (argument_list "(param_2,__n)" ( identifier , identifier )))) )) && (parenthesized_expression "(!CARRY8(param_2 + __n,param_1[6]))" ( (unary_expression "!CARRY8(param_2 + __n,param_1[6])" ! (call_expression "CARRY8(param_2 + __n,param_1[6])" identifier (argument_list "(param_2 + __n,param_1[6])" ( (binary_expression "param_2 + __n" identifier + identifier) , (subscript_expression "param_1[6]" identifier [ number_literal ]) )))) ))) )) (compound_statement "{\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }" { (expression_statement "uVar4 = uVar5 + 100 + (__n >> 3);" (assignment_expression "uVar4 = uVar5 + 100 + (__n >> 3)" identifier = (binary_expression "uVar5 + 100 + (__n >> 3)" (binary_expression "uVar5 + 100" identifier + number_literal) + (parenthesized_expression "(__n >> 3)" ( (binary_expression "__n >> 3" identifier >> number_literal) )))) ;) (if_statement "if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }" if (parenthesized_expression "(uVar5 <= *param_1)" ( (binary_expression "uVar5 <= *param_1" identifier <= (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n      uVar5 = *param_1;\n    }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }" if (parenthesized_expression "(uVar4 <= uVar5)" ( (binary_expression "uVar4 <= uVar5" identifier <= identifier) )) (compound_statement "{\n      uVar4 = uVar5;\n    }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) })) (expression_statement "puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);" (assignment_expression "puVar3 = (ulong *)FUN_00132f20(param_1,uVar4)" identifier = (cast_expression "(ulong *)FUN_00132f20(param_1,uVar4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00132f20(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier ))))) ;) (if_statement "if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }" if (parenthesized_expression "(puVar3 != (ulong *)0x0)" ( (binary_expression "puVar3 != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }" { (expression_statement "param_1[1] = (ulong)puVar3;" (assignment_expression "param_1[1] = (ulong)puVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(ulong)puVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar3[1] = uVar1;" (assignment_expression "puVar3[1] = uVar1" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = (long)puVar3 + uVar4;" (assignment_expression "param_1[4] = (long)puVar3 + uVar4" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "(long)puVar3 + uVar4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "*puVar3 = (long)puVar3 + uVar4;" (assignment_expression "*puVar3 = (long)puVar3 + uVar4" (pointer_expression "*puVar3" * identifier) = (binary_expression "(long)puVar3 + uVar4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "__dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);" (assignment_expression "__dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" identifier = (cast_expression "(void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" ( (binary_expression "(long)puVar3 + param_1[6] + 0x10 & ~param_1[6]" (binary_expression "(long)puVar3 + param_1[6] + 0x10" (binary_expression "(long)puVar3 + param_1[6]" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_1[6]" identifier [ number_literal ])) + number_literal) & (unary_expression "~param_1[6]" ~ (subscript_expression "param_1[6]" identifier [ number_literal ]))) )))) ;) (expression_statement "memcpy(__dest,(void *)param_1[2],__n);" (call_expression "memcpy(__dest,(void *)param_1[2],__n)" identifier (argument_list "(__dest,(void *)param_1[2],__n)" ( identifier , (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) , identifier ))) ;) (if_statement "if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }" if (parenthesized_expression "(((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6])))" ( (binary_expression "((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))" (parenthesized_expression "((param_1[10] & 2) == 0)" ( (binary_expression "(param_1[10] & 2) == 0" (parenthesized_expression "(param_1[10] & 2)" ( (binary_expression "param_1[10] & 2" (subscript_expression "param_1[10]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))" ( (binary_expression "param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6])" (subscript_expression "param_1[2]" identifier [ number_literal ]) == (parenthesized_expression "(~param_1[6] & uVar1 + 0x10 + param_1[6])" ( (binary_expression "~param_1[6] & uVar1 + 0x10 + param_1[6]" (unary_expression "~param_1[6]" ~ (subscript_expression "param_1[6]" identifier [ number_literal ])) & (binary_expression "uVar1 + 0x10 + param_1[6]" (binary_expression "uVar1 + 0x10" identifier + number_literal) + (subscript_expression "param_1[6]" identifier [ number_literal ]))) ))) ))) )) (compound_statement "{\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }" { (expression_statement "puVar3[1] = *(ulong *)(uVar1 + 8);" (assignment_expression "puVar3[1] = *(ulong *)(uVar1 + 8)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (pointer_expression "*(ulong *)(uVar1 + 8)" * (cast_expression "(ulong *)(uVar1 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 8)" ( (binary_expression "uVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "FUN_00132fe0(param_1,uVar1);" (call_expression "FUN_00132fe0(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier ))) ;) })) (expression_statement "param_1[2] = (ulong)__dest;" (assignment_expression "param_1[2] = (ulong)__dest" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(ulong)__dest" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "param_1[3] = __n + (long)__dest;" (assignment_expression "param_1[3] = __n + (long)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "__n + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "*(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;" (assignment_expression "*(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (binary_expression "(byte)param_1[10] & 0xfd" (cast_expression "(byte)param_1[10]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) & number_literal)) ;) (return_statement "return;" return ;) })) })) (expression_statement "(*(code *)obstack_alloc_failed_handler)();" (call_expression "(*(code *)obstack_alloc_failed_handler)()" (parenthesized_expression "(*(code *)obstack_alloc_failed_handler)" ( (pointer_expression "*(code *)obstack_alloc_failed_handler" * (cast_expression "(code *)obstack_alloc_failed_handler" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "pcVar2 = (code *)invalidInstructionException();" (assignment_expression "pcVar2 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "_DAT_00000008 = uVar1;" (assignment_expression "_DAT_00000008 = uVar1" identifier = identifier) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid _obstack_newchunk(obstack *h,size_t length)\n\n{\n  _obstack_chunk *old_chunk;\n  code *pcVar1;\n  _obstack_chunk *p_Var2;\n  ulong size;\n  char *__dest;\n  ulong uVar3;\n  ulong __n;\n  \n  __n = (long)h->next_free - (long)h->object_base;\n  old_chunk = h->chunk;\n  uVar3 = length + __n + h->alignment_mask;\n  if ((!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask))) {\n    size = uVar3 + 100 + (__n >> 3);\n    if (uVar3 <= h->chunk_size) {\n      uVar3 = h->chunk_size;\n    }\n    if (size <= uVar3) {\n      size = uVar3;\n    }\n    p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);\n    if (p_Var2 != (_obstack_chunk *)0x0) {\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }\n  }\n  (*obstack_alloc_failed_handler)();\n  h->chunk = (_obstack_chunk *)0x0;\n                    /* WARNING: Does not return */\n  pcVar1 = (code *)invalidInstructionException();\n  _DAT_00000008 = old_chunk;\n  (*pcVar1)();\n}\n\n" comment (function_definition "void _obstack_newchunk(obstack *h,size_t length)\n\n{\n  _obstack_chunk *old_chunk;\n  code *pcVar1;\n  _obstack_chunk *p_Var2;\n  ulong size;\n  char *__dest;\n  ulong uVar3;\n  ulong __n;\n  \n  __n = (long)h->next_free - (long)h->object_base;\n  old_chunk = h->chunk;\n  uVar3 = length + __n + h->alignment_mask;\n  if ((!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask))) {\n    size = uVar3 + 100 + (__n >> 3);\n    if (uVar3 <= h->chunk_size) {\n      uVar3 = h->chunk_size;\n    }\n    if (size <= uVar3) {\n      size = uVar3;\n    }\n    p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);\n    if (p_Var2 != (_obstack_chunk *)0x0) {\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }\n  }\n  (*obstack_alloc_failed_handler)();\n  h->chunk = (_obstack_chunk *)0x0;\n                    /* WARNING: Does not return */\n  pcVar1 = (code *)invalidInstructionException();\n  _DAT_00000008 = old_chunk;\n  (*pcVar1)();\n}" primitive_type (function_declarator "_obstack_newchunk(obstack *h,size_t length)" identifier (parameter_list "(obstack *h,size_t length)" ( (parameter_declaration "obstack *h" type_identifier (pointer_declarator "*h" * identifier)) , (parameter_declaration "size_t length" primitive_type identifier) ))) (compound_statement "{\n  _obstack_chunk *old_chunk;\n  code *pcVar1;\n  _obstack_chunk *p_Var2;\n  ulong size;\n  char *__dest;\n  ulong uVar3;\n  ulong __n;\n  \n  __n = (long)h->next_free - (long)h->object_base;\n  old_chunk = h->chunk;\n  uVar3 = length + __n + h->alignment_mask;\n  if ((!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask))) {\n    size = uVar3 + 100 + (__n >> 3);\n    if (uVar3 <= h->chunk_size) {\n      uVar3 = h->chunk_size;\n    }\n    if (size <= uVar3) {\n      size = uVar3;\n    }\n    p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);\n    if (p_Var2 != (_obstack_chunk *)0x0) {\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }\n  }\n  (*obstack_alloc_failed_handler)();\n  h->chunk = (_obstack_chunk *)0x0;\n                    /* WARNING: Does not return */\n  pcVar1 = (code *)invalidInstructionException();\n  _DAT_00000008 = old_chunk;\n  (*pcVar1)();\n}" { (declaration "_obstack_chunk *old_chunk;" type_identifier (pointer_declarator "*old_chunk" * identifier) ;) (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "_obstack_chunk *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "ulong size;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (expression_statement "__n = (long)h->next_free - (long)h->object_base;" (assignment_expression "__n = (long)h->next_free - (long)h->object_base" identifier = (binary_expression "(long)h->next_free - (long)h->object_base" (cast_expression "(long)h->next_free" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "h->next_free" identifier -> field_identifier)) - (cast_expression "(long)h->object_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "h->object_base" identifier -> field_identifier)))) ;) (expression_statement "old_chunk = h->chunk;" (assignment_expression "old_chunk = h->chunk" identifier = (field_expression "h->chunk" identifier -> field_identifier)) ;) (expression_statement "uVar3 = length + __n + h->alignment_mask;" (assignment_expression "uVar3 = length + __n + h->alignment_mask" identifier = (binary_expression "length + __n + h->alignment_mask" (binary_expression "length + __n" identifier + identifier) + (field_expression "h->alignment_mask" identifier -> field_identifier))) ;) (if_statement "if ((!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask))) {\n    size = uVar3 + 100 + (__n >> 3);\n    if (uVar3 <= h->chunk_size) {\n      uVar3 = h->chunk_size;\n    }\n    if (size <= uVar3) {\n      size = uVar3;\n    }\n    p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);\n    if (p_Var2 != (_obstack_chunk *)0x0) {\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }\n  }" if (parenthesized_expression "((!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask)))" ( (binary_expression "(!CARRY8(length,__n)) && (!CARRY8(length + __n,h->alignment_mask))" (parenthesized_expression "(!CARRY8(length,__n))" ( (unary_expression "!CARRY8(length,__n)" ! (call_expression "CARRY8(length,__n)" identifier (argument_list "(length,__n)" ( identifier , identifier )))) )) && (parenthesized_expression "(!CARRY8(length + __n,h->alignment_mask))" ( (unary_expression "!CARRY8(length + __n,h->alignment_mask)" ! (call_expression "CARRY8(length + __n,h->alignment_mask)" identifier (argument_list "(length + __n,h->alignment_mask)" ( (binary_expression "length + __n" identifier + identifier) , (field_expression "h->alignment_mask" identifier -> field_identifier) )))) ))) )) (compound_statement "{\n    size = uVar3 + 100 + (__n >> 3);\n    if (uVar3 <= h->chunk_size) {\n      uVar3 = h->chunk_size;\n    }\n    if (size <= uVar3) {\n      size = uVar3;\n    }\n    p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);\n    if (p_Var2 != (_obstack_chunk *)0x0) {\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }\n  }" { (expression_statement "size = uVar3 + 100 + (__n >> 3);" (assignment_expression "size = uVar3 + 100 + (__n >> 3)" identifier = (binary_expression "uVar3 + 100 + (__n >> 3)" (binary_expression "uVar3 + 100" identifier + number_literal) + (parenthesized_expression "(__n >> 3)" ( (binary_expression "__n >> 3" identifier >> number_literal) )))) ;) (if_statement "if (uVar3 <= h->chunk_size) {\n      uVar3 = h->chunk_size;\n    }" if (parenthesized_expression "(uVar3 <= h->chunk_size)" ( (binary_expression "uVar3 <= h->chunk_size" identifier <= (field_expression "h->chunk_size" identifier -> field_identifier)) )) (compound_statement "{\n      uVar3 = h->chunk_size;\n    }" { (expression_statement "uVar3 = h->chunk_size;" (assignment_expression "uVar3 = h->chunk_size" identifier = (field_expression "h->chunk_size" identifier -> field_identifier)) ;) })) (if_statement "if (size <= uVar3) {\n      size = uVar3;\n    }" if (parenthesized_expression "(size <= uVar3)" ( (binary_expression "size <= uVar3" identifier <= identifier) )) (compound_statement "{\n      size = uVar3;\n    }" { (expression_statement "size = uVar3;" (assignment_expression "size = uVar3" identifier = identifier) ;) })) (expression_statement "p_Var2 = (_obstack_chunk *)call_chunkfun(h,size);" (assignment_expression "p_Var2 = (_obstack_chunk *)call_chunkfun(h,size)" identifier = (cast_expression "(_obstack_chunk *)call_chunkfun(h,size)" ( (type_descriptor "_obstack_chunk *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "call_chunkfun(h,size)" identifier (argument_list "(h,size)" ( identifier , identifier ))))) ;) (if_statement "if (p_Var2 != (_obstack_chunk *)0x0) {\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }" if (parenthesized_expression "(p_Var2 != (_obstack_chunk *)0x0)" ( (binary_expression "p_Var2 != (_obstack_chunk *)0x0" identifier != (cast_expression "(_obstack_chunk *)0x0" ( (type_descriptor "_obstack_chunk *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      h->chunk = p_Var2;\n      p_Var2->prev = old_chunk;\n      h->chunk_limit = p_Var2->contents + (size - 0x10);\n      p_Var2->limit = p_Var2->contents + (size - 0x10);\n      __dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);\n      memcpy(__dest,h->object_base,__n);\n      if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }\n      h->object_base = __dest;\n      h->next_free = __dest + __n;\n      h->field_0x50 = h->field_0x50 & 0xfd;\n      return;\n    }" { (expression_statement "h->chunk = p_Var2;" (assignment_expression "h->chunk = p_Var2" (field_expression "h->chunk" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var2->prev = old_chunk;" (assignment_expression "p_Var2->prev = old_chunk" (field_expression "p_Var2->prev" identifier -> field_identifier) = identifier) ;) (expression_statement "h->chunk_limit = p_Var2->contents + (size - 0x10);" (assignment_expression "h->chunk_limit = p_Var2->contents + (size - 0x10)" (field_expression "h->chunk_limit" identifier -> field_identifier) = (binary_expression "p_Var2->contents + (size - 0x10)" (field_expression "p_Var2->contents" identifier -> field_identifier) + (parenthesized_expression "(size - 0x10)" ( (binary_expression "size - 0x10" identifier - number_literal) )))) ;) (expression_statement "p_Var2->limit = p_Var2->contents + (size - 0x10);" (assignment_expression "p_Var2->limit = p_Var2->contents + (size - 0x10)" (field_expression "p_Var2->limit" identifier -> field_identifier) = (binary_expression "p_Var2->contents + (size - 0x10)" (field_expression "p_Var2->contents" identifier -> field_identifier) + (parenthesized_expression "(size - 0x10)" ( (binary_expression "size - 0x10" identifier - number_literal) )))) ;) (expression_statement "__dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask);" (assignment_expression "__dest = (char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask)" identifier = (cast_expression "(char *)((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask)" ( (binary_expression "(ulong)(p_Var2->contents + h->alignment_mask) & ~h->alignment_mask" (call_expression "(ulong)(p_Var2->contents + h->alignment_mask)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(p_Var2->contents + h->alignment_mask)" ( (binary_expression "p_Var2->contents + h->alignment_mask" (field_expression "p_Var2->contents" identifier -> field_identifier) + (field_expression "h->alignment_mask" identifier -> field_identifier)) ))) & (unary_expression "~h->alignment_mask" ~ (field_expression "h->alignment_mask" identifier -> field_identifier))) )))) ;) (expression_statement "memcpy(__dest,h->object_base,__n);" (call_expression "memcpy(__dest,h->object_base,__n)" identifier (argument_list "(__dest,h->object_base,__n)" ( identifier , (field_expression "h->object_base" identifier -> field_identifier) , identifier ))) ;) (if_statement "if (((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))) {\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }" if (parenthesized_expression "(((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask))))" ( (binary_expression "((h->field_0x50 & 2) == 0) &&\n         (h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))" (parenthesized_expression "((h->field_0x50 & 2) == 0)" ( (binary_expression "(h->field_0x50 & 2) == 0" (parenthesized_expression "(h->field_0x50 & 2)" ( (binary_expression "h->field_0x50 & 2" (field_expression "h->field_0x50" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)))" ( (binary_expression "h->object_base ==\n          (char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask))" (field_expression "h->object_base" identifier -> field_identifier) == (cast_expression "(char *)(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask))" ( (binary_expression "~h->alignment_mask & (ulong)(old_chunk->contents + h->alignment_mask)" (unary_expression "~h->alignment_mask" ~ (field_expression "h->alignment_mask" identifier -> field_identifier)) & (call_expression "(ulong)(old_chunk->contents + h->alignment_mask)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(old_chunk->contents + h->alignment_mask)" ( (binary_expression "old_chunk->contents + h->alignment_mask" (field_expression "old_chunk->contents" identifier -> field_identifier) + (field_expression "h->alignment_mask" identifier -> field_identifier)) )))) )))) ))) )) (compound_statement "{\n        p_Var2->prev = old_chunk->prev;\n        call_freefun(h,old_chunk);\n      }" { (expression_statement "p_Var2->prev = old_chunk->prev;" (assignment_expression "p_Var2->prev = old_chunk->prev" (field_expression "p_Var2->prev" identifier -> field_identifier) = (field_expression "old_chunk->prev" identifier -> field_identifier)) ;) (expression_statement "call_freefun(h,old_chunk);" (call_expression "call_freefun(h,old_chunk)" identifier (argument_list "(h,old_chunk)" ( identifier , identifier ))) ;) })) (expression_statement "h->object_base = __dest;" (assignment_expression "h->object_base = __dest" (field_expression "h->object_base" identifier -> field_identifier) = identifier) ;) (expression_statement "h->next_free = __dest + __n;" (assignment_expression "h->next_free = __dest + __n" (field_expression "h->next_free" identifier -> field_identifier) = (binary_expression "__dest + __n" identifier + identifier)) ;) (expression_statement "h->field_0x50 = h->field_0x50 & 0xfd;" (assignment_expression "h->field_0x50 = h->field_0x50 & 0xfd" (field_expression "h->field_0x50" identifier -> field_identifier) = (binary_expression "h->field_0x50 & 0xfd" (field_expression "h->field_0x50" identifier -> field_identifier) & number_literal)) ;) (return_statement "return;" return ;) })) })) (expression_statement "(*obstack_alloc_failed_handler)();" (call_expression "(*obstack_alloc_failed_handler)()" (parenthesized_expression "(*obstack_alloc_failed_handler)" ( (pointer_expression "*obstack_alloc_failed_handler" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "h->chunk = (_obstack_chunk *)0x0;" (assignment_expression "h->chunk = (_obstack_chunk *)0x0" (field_expression "h->chunk" identifier -> field_identifier) = (cast_expression "(_obstack_chunk *)0x0" ( (type_descriptor "_obstack_chunk *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) comment (expression_statement "pcVar1 = (code *)invalidInstructionException();" (assignment_expression "pcVar1 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "_DAT_00000008 = old_chunk;" (assignment_expression "_DAT_00000008 = old_chunk" identifier = identifier) ;) (expression_statement "(*pcVar1)();" (call_expression "(*pcVar1)()" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "()" ( ))) ;) })))
(translation_unit "void _obstack_newchunk(ulong *param_1,ulong param_2)\n\n{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    \n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}\n\n" (function_definition "void _obstack_newchunk(ulong *param_1,ulong param_2)\n\n{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    \n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}" primitive_type (function_declarator "_obstack_newchunk(ulong *param_1,ulong param_2)" identifier (parameter_list "(ulong *param_1,ulong param_2)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    \n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (expression_statement "__n = param_1[3] - param_1[2];" (assignment_expression "__n = param_1[3] - param_1[2]" identifier = (binary_expression "param_1[3] - param_1[2]" (subscript_expression "param_1[3]" identifier [ number_literal ]) - (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_2 + __n + param_1[6];" (assignment_expression "uVar5 = param_2 + __n + param_1[6]" identifier = (binary_expression "param_2 + __n + param_1[6]" (binary_expression "param_2 + __n" identifier + identifier) + (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (if_statement "if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }" if (parenthesized_expression "((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6])))" ( (binary_expression "(!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))" (parenthesized_expression "(!CARRY8(param_2,__n))" ( (unary_expression "!CARRY8(param_2,__n)" ! (call_expression "CARRY8(param_2,__n)" identifier (argument_list "(param_2,__n)" ( identifier , identifier )))) )) && (parenthesized_expression "(!CARRY8(param_2 + __n,param_1[6]))" ( (unary_expression "!CARRY8(param_2 + __n,param_1[6])" ! (call_expression "CARRY8(param_2 + __n,param_1[6])" identifier (argument_list "(param_2 + __n,param_1[6])" ( (binary_expression "param_2 + __n" identifier + identifier) , (subscript_expression "param_1[6]" identifier [ number_literal ]) )))) ))) )) (compound_statement "{\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }" { (expression_statement "uVar4 = uVar5 + 100 + (__n >> 3);" (assignment_expression "uVar4 = uVar5 + 100 + (__n >> 3)" identifier = (binary_expression "uVar5 + 100 + (__n >> 3)" (binary_expression "uVar5 + 100" identifier + number_literal) + (parenthesized_expression "(__n >> 3)" ( (binary_expression "__n >> 3" identifier >> number_literal) )))) ;) (if_statement "if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }" if (parenthesized_expression "(uVar5 <= *param_1)" ( (binary_expression "uVar5 <= *param_1" identifier <= (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n      uVar5 = *param_1;\n    }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }" if (parenthesized_expression "(uVar4 <= uVar5)" ( (binary_expression "uVar4 <= uVar5" identifier <= identifier) )) (compound_statement "{\n      uVar4 = uVar5;\n    }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) })) (expression_statement "puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);" (assignment_expression "puVar3 = (ulong *)FUN_00132f20(param_1,uVar4)" identifier = (cast_expression "(ulong *)FUN_00132f20(param_1,uVar4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00132f20(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier ))))) ;) (if_statement "if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }" if (parenthesized_expression "(puVar3 != (ulong *)0x0)" ( (binary_expression "puVar3 != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }" { (expression_statement "param_1[1] = (ulong)puVar3;" (assignment_expression "param_1[1] = (ulong)puVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(ulong)puVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar3[1] = uVar1;" (assignment_expression "puVar3[1] = uVar1" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = (long)puVar3 + uVar4;" (assignment_expression "param_1[4] = (long)puVar3 + uVar4" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "(long)puVar3 + uVar4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "*puVar3 = (long)puVar3 + uVar4;" (assignment_expression "*puVar3 = (long)puVar3 + uVar4" (pointer_expression "*puVar3" * identifier) = (binary_expression "(long)puVar3 + uVar4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "__dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);" (assignment_expression "__dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" identifier = (cast_expression "(void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" ( (binary_expression "(long)puVar3 + param_1[6] + 0x10 & ~param_1[6]" (binary_expression "(long)puVar3 + param_1[6] + 0x10" (binary_expression "(long)puVar3 + param_1[6]" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_1[6]" identifier [ number_literal ])) + number_literal) & (unary_expression "~param_1[6]" ~ (subscript_expression "param_1[6]" identifier [ number_literal ]))) )))) ;) (expression_statement "memcpy(__dest,(void *)param_1[2],__n);" (call_expression "memcpy(__dest,(void *)param_1[2],__n)" identifier (argument_list "(__dest,(void *)param_1[2],__n)" ( identifier , (cast_expression "(void *)param_1[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) , identifier ))) ;) (if_statement "if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }" if (parenthesized_expression "(((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6])))" ( (binary_expression "((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))" (parenthesized_expression "((param_1[10] & 2) == 0)" ( (binary_expression "(param_1[10] & 2) == 0" (parenthesized_expression "(param_1[10] & 2)" ( (binary_expression "param_1[10] & 2" (subscript_expression "param_1[10]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))" ( (binary_expression "param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6])" (subscript_expression "param_1[2]" identifier [ number_literal ]) == (parenthesized_expression "(~param_1[6] & uVar1 + 0x10 + param_1[6])" ( (binary_expression "~param_1[6] & uVar1 + 0x10 + param_1[6]" (unary_expression "~param_1[6]" ~ (subscript_expression "param_1[6]" identifier [ number_literal ])) & (binary_expression "uVar1 + 0x10 + param_1[6]" (binary_expression "uVar1 + 0x10" identifier + number_literal) + (subscript_expression "param_1[6]" identifier [ number_literal ]))) ))) ))) )) (compound_statement "{\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }" { (expression_statement "puVar3[1] = *(ulong *)(uVar1 + 8);" (assignment_expression "puVar3[1] = *(ulong *)(uVar1 + 8)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (pointer_expression "*(ulong *)(uVar1 + 8)" * (cast_expression "(ulong *)(uVar1 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 8)" ( (binary_expression "uVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "FUN_00132fe0(param_1,uVar1);" (call_expression "FUN_00132fe0(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier ))) ;) })) (expression_statement "param_1[2] = (ulong)__dest;" (assignment_expression "param_1[2] = (ulong)__dest" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(ulong)__dest" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "param_1[3] = __n + (long)__dest;" (assignment_expression "param_1[3] = __n + (long)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "__n + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "*(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;" (assignment_expression "*(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (binary_expression "(byte)param_1[10] & 0xfd" (cast_expression "(byte)param_1[10]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) & number_literal)) ;) (return_statement "return;" return ;) })) })) (expression_statement "(*(code *)obstack_alloc_failed_handler)();" (call_expression "(*(code *)obstack_alloc_failed_handler)()" (parenthesized_expression "(*(code *)obstack_alloc_failed_handler)" ( (pointer_expression "*(code *)obstack_alloc_failed_handler" * (cast_expression "(code *)obstack_alloc_failed_handler" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar2 = (code *)invalidInstructionException();" (assignment_expression "pcVar2 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "_DAT_00000008 = uVar1;" (assignment_expression "_DAT_00000008 = uVar1" identifier = identifier) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) && (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (subscript_expression IDENT [ LIT ]) )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) & (unary_expression ~ (subscript_expression IDENT [ LIT ]))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (parenthesized_expression ( (binary_expression (unary_expression ~ (subscript_expression IDENT [ LIT ])) & (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ LIT ]))) ))) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT)) ;) (return_statement return ;) })) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })))
(function_definition "void _obstack_newchunk(ulong *param_1,ulong param_2)\n\n{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    \n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}" (primitive_type "void") (function_declarator "_obstack_newchunk(ulong *param_1,ulong param_2)" (identifier "_obstack_newchunk") (parameter_list "(ulong *param_1,ulong param_2)" (( "(") (parameter_declaration "ulong *param_1" (type_identifier "ulong") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  code *pcVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  void *__dest;\n  ulong uVar5;\n  ulong __n;\n  \n  __n = param_1[3] - param_1[2];\n  uVar1 = param_1[1];\n  uVar5 = param_2 + __n + param_1[6];\n  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }\n  (*(code *)obstack_alloc_failed_handler)();\n  param_1[1] = 0;\n                    \n  pcVar2 = (code *)invalidInstructionException();\n  _DAT_00000008 = uVar1;\n  (*pcVar2)();\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "ulong *puVar3;" (type_identifier "ulong") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "ulong __n;" (type_identifier "ulong") (identifier "__n") (; ";")) (expression_statement "__n = param_1[3] - param_1[2];" (assignment_expression "__n = param_1[3] - param_1[2]" (identifier "__n") (= "=") (binary_expression "param_1[3] - param_1[2]" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (- "-") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = param_2 + __n + param_1[6];" (assignment_expression "uVar5 = param_2 + __n + param_1[6]" (identifier "uVar5") (= "=") (binary_expression "param_2 + __n + param_1[6]" (binary_expression "param_2 + __n" (identifier "param_2") (+ "+") (identifier "__n")) (+ "+") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";")) (if_statement "if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }" (if "if") (parenthesized_expression "((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6])))" (( "(") (binary_expression "(!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))" (parenthesized_expression "(!CARRY8(param_2,__n))" (( "(") (unary_expression "!CARRY8(param_2,__n)" (! "!") (call_expression "CARRY8(param_2,__n)" (identifier "CARRY8") (argument_list "(param_2,__n)" (( "(") (identifier "param_2") (, ",") (identifier "__n") () ")")))) () ")")) (&& "&&") (parenthesized_expression "(!CARRY8(param_2 + __n,param_1[6]))" (( "(") (unary_expression "!CARRY8(param_2 + __n,param_1[6])" (! "!") (call_expression "CARRY8(param_2 + __n,param_1[6])" (identifier "CARRY8") (argument_list "(param_2 + __n,param_1[6])" (( "(") (binary_expression "param_2 + __n" (identifier "param_2") (+ "+") (identifier "__n")) (, ",") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) () ")")))) () ")"))) () ")")) (compound_statement "{\n    uVar4 = uVar5 + 100 + (__n >> 3);\n    if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }\n    if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }\n    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);\n    if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }\n  }" ({ "{") (expression_statement "uVar4 = uVar5 + 100 + (__n >> 3);" (assignment_expression "uVar4 = uVar5 + 100 + (__n >> 3)" (identifier "uVar4") (= "=") (binary_expression "uVar5 + 100 + (__n >> 3)" (binary_expression "uVar5 + 100" (identifier "uVar5") (+ "+") (number_literal "100")) (+ "+") (parenthesized_expression "(__n >> 3)" (( "(") (binary_expression "__n >> 3" (identifier "__n") (>> ">>") (number_literal "3")) () ")")))) (; ";")) (if_statement "if (uVar5 <= *param_1) {\n      uVar5 = *param_1;\n    }" (if "if") (parenthesized_expression "(uVar5 <= *param_1)" (( "(") (binary_expression "uVar5 <= *param_1" (identifier "uVar5") (<= "<=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n      uVar5 = *param_1;\n    }" ({ "{") (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (if_statement "if (uVar4 <= uVar5) {\n      uVar4 = uVar5;\n    }" (if "if") (parenthesized_expression "(uVar4 <= uVar5)" (( "(") (binary_expression "uVar4 <= uVar5" (identifier "uVar4") (<= "<=") (identifier "uVar5")) () ")")) (compound_statement "{\n      uVar4 = uVar5;\n    }" ({ "{") (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);" (assignment_expression "puVar3 = (ulong *)FUN_00132f20(param_1,uVar4)" (identifier "puVar3") (= "=") (cast_expression "(ulong *)FUN_00132f20(param_1,uVar4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00132f20(param_1,uVar4)" (identifier "FUN_00132f20") (argument_list "(param_1,uVar4)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") () ")"))))) (; ";")) (if_statement "if (puVar3 != (ulong *)0x0) {\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }" (if "if") (parenthesized_expression "(puVar3 != (ulong *)0x0)" (( "(") (binary_expression "puVar3 != (ulong *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      param_1[1] = (ulong)puVar3;\n      puVar3[1] = uVar1;\n      param_1[4] = (long)puVar3 + uVar4;\n      *puVar3 = (long)puVar3 + uVar4;\n      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);\n      memcpy(__dest,(void *)param_1[2],__n);\n      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }\n      param_1[2] = (ulong)__dest;\n      param_1[3] = __n + (long)__dest;\n      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;\n      return;\n    }" ({ "{") (expression_statement "param_1[1] = (ulong)puVar3;" (assignment_expression "param_1[1] = (ulong)puVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(ulong)puVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3[1] = uVar1;" (assignment_expression "puVar3[1] = uVar1" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_1[4] = (long)puVar3 + uVar4;" (assignment_expression "param_1[4] = (long)puVar3 + uVar4" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "(long)puVar3 + uVar4" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "*puVar3 = (long)puVar3 + uVar4;" (assignment_expression "*puVar3 = (long)puVar3 + uVar4" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (binary_expression "(long)puVar3 + uVar4" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "__dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);" (assignment_expression "__dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" (identifier "__dest") (= "=") (cast_expression "(void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + param_1[6] + 0x10 & ~param_1[6])" (( "(") (binary_expression "(long)puVar3 + param_1[6] + 0x10 & ~param_1[6]" (binary_expression "(long)puVar3 + param_1[6] + 0x10" (binary_expression "(long)puVar3 + param_1[6]" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "0x10")) (& "&") (unary_expression "~param_1[6]" (~ "~") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) () ")")))) (; ";")) (expression_statement "memcpy(__dest,(void *)param_1[2],__n);" (call_expression "memcpy(__dest,(void *)param_1[2],__n)" (identifier "memcpy") (argument_list "(__dest,(void *)param_1[2],__n)" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)param_1[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (, ",") (identifier "__n") () ")"))) (; ";")) (if_statement "if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }" (if "if") (parenthesized_expression "(((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6])))" (( "(") (binary_expression "((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))" (parenthesized_expression "((param_1[10] & 2) == 0)" (( "(") (binary_expression "(param_1[10] & 2) == 0" (parenthesized_expression "(param_1[10] & 2)" (( "(") (binary_expression "param_1[10] & 2" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))" (( "(") (binary_expression "param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6])" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (parenthesized_expression "(~param_1[6] & uVar1 + 0x10 + param_1[6])" (( "(") (binary_expression "~param_1[6] & uVar1 + 0x10 + param_1[6]" (unary_expression "~param_1[6]" (~ "~") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (& "&") (binary_expression "uVar1 + 0x10 + param_1[6]" (binary_expression "uVar1 + 0x10" (identifier "uVar1") (+ "+") (number_literal "0x10")) (+ "+") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) () ")"))) () ")"))) () ")")) (compound_statement "{\n        puVar3[1] = *(ulong *)(uVar1 + 8);\n        FUN_00132fe0(param_1,uVar1);\n      }" ({ "{") (expression_statement "puVar3[1] = *(ulong *)(uVar1 + 8);" (assignment_expression "puVar3[1] = *(ulong *)(uVar1 + 8)" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(ulong *)(uVar1 + 8)" (* "*") (cast_expression "(ulong *)(uVar1 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + 8)" (( "(") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "FUN_00132fe0(param_1,uVar1);" (call_expression "FUN_00132fe0(param_1,uVar1)" (identifier "FUN_00132fe0") (argument_list "(param_1,uVar1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[2] = (ulong)__dest;" (assignment_expression "param_1[2] = (ulong)__dest" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(ulong)__dest" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "__dest"))) (; ";")) (expression_statement "param_1[3] = __n + (long)__dest;" (assignment_expression "param_1[3] = __n + (long)__dest" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "__n + (long)__dest" (identifier "__n") (+ "+") (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")))) (; ";")) (expression_statement "*(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;" (assignment_expression "*(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd" (pointer_expression "*(byte *)(param_1 + 10)" (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "(byte)param_1[10] & 0xfd" (cast_expression "(byte)param_1[10]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (& "&") (number_literal "0xfd"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "(*(code *)obstack_alloc_failed_handler)();" (call_expression "(*(code *)obstack_alloc_failed_handler)()" (parenthesized_expression "(*(code *)obstack_alloc_failed_handler)" (( "(") (pointer_expression "*(code *)obstack_alloc_failed_handler" (* "*") (cast_expression "(code *)obstack_alloc_failed_handler" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "obstack_alloc_failed_handler"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar2 = (code *)invalidInstructionException();" (assignment_expression "pcVar2 = (code *)invalidInstructionException()" (identifier "pcVar2") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "_DAT_00000008 = uVar1;" (assignment_expression "_DAT_00000008 = uVar1" (identifier "_DAT_00000008") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void function_1(type_1 *h,size_t var_1)

{
  type_2 *old_chunk;
  type_3 *pcVar1;
  type_2 *var_7;
  type_4 var_5;
  char *var_10;
  type_4 var_4;
  type_4 var_2;
  
  var_2 = (long)h->next_free - (long)h->object_base;
  old_chunk = h->chunk;
  var_4 = var_1 + var_2 + h->alignment_mask;
  if ((!var_3(var_1,var_2)) && (!var_3(var_1 + var_2,h->alignment_mask))) {
    var_5 = var_4 + 100 + (var_2 >> 3);
    if (var_4 <= h->chunk_size) {
      var_4 = h->chunk_size;
    }
    if (var_5 <= var_4) {
      var_5 = var_4;
    }
    var_7 = (type_2 *)var_6(h,var_5);
    if (var_7 != (type_2 *)0x0) {
      h->chunk = var_7;
      var_7->prev = old_chunk;
      h->chunk_limit = var_7->contents + (var_5 - 0x10);
      var_7->limit = var_7->contents + (var_5 - 0x10);
      var_10 = (char *)((type_4)(var_7->contents + h->alignment_mask) & ~h->alignment_mask);
      var_8(var_10,h->object_base,var_2);
      if (((h->field_0x50 & 2) == 0) &&
         (h->object_base ==
          (char *)(~h->alignment_mask & (type_4)(old_chunk->contents + h->alignment_mask)))) {
        var_7->prev = old_chunk->prev;
        var_9(h,old_chunk);
      }
      h->object_base = var_10;
      h->next_free = var_10 + var_2;
      h->field_0x50 = h->field_0x50 & 0xfd;
      return;
    }
  }
  (*obstack_alloc_failed_handler)();
  h->chunk = (type_2 *)0x0;
                    /* WARNING: Does not return */
  pcVar1 = (type_3 *)var_11();
  _DAT_00000008 = old_chunk;
  (*pcVar1)();
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void MASKED(ulong *param_1,ulong param_2)

{
  ulong uVar1;
  code *pcVar2;
  ulong *puVar3;
  ulong uVar4;
  void *__dest;
  ulong uVar5;
  ulong __n;
  
  __n = param_1[3] - param_1[2];
  uVar1 = param_1[1];
  uVar5 = param_2 + __n + param_1[6];
  if ((!CARRY8(param_2,__n)) && (!CARRY8(param_2 + __n,param_1[6]))) {
    uVar4 = uVar5 + 100 + (__n >> 3);
    if (uVar5 <= *param_1) {
      uVar5 = *param_1;
    }
    if (uVar4 <= uVar5) {
      uVar4 = uVar5;
    }
    puVar3 = (ulong *)FUN_00132f20(param_1,uVar4);
    if (puVar3 != (ulong *)0x0) {
      param_1[1] = (ulong)puVar3;
      puVar3[1] = uVar1;
      param_1[4] = (long)puVar3 + uVar4;
      *puVar3 = (long)puVar3 + uVar4;
      __dest = (void *)((long)puVar3 + param_1[6] + 0x10 & ~param_1[6]);
      memcpy(__dest,(void *)param_1[2],__n);
      if (((param_1[10] & 2) == 0) && (param_1[2] == (~param_1[6] & uVar1 + 0x10 + param_1[6]))) {
        puVar3[1] = *(ulong *)(uVar1 + 8);
        FUN_00132fe0(param_1,uVar1);
      }
      param_1[2] = (ulong)__dest;
      param_1[3] = __n + (long)__dest;
      *(byte *)(param_1 + 10) = (byte)param_1[10] & 0xfd;
      return;
    }
  }
  (*(code *)obstack_alloc_failed_handler)();
  param_1[1] = 0;
                    /* WARNING: Does not return */
  pcVar2 = (code *)invalidInstructionException();
  _DAT_00000008 = uVar1;
  (*pcVar2)();
}

