
void gold::write_unsigned_LEB_128
               (vector<unsigned_char,_std::allocator<unsigned_char>_> *buffer,uint64_t value)

{
  byte *pbVar1;
  pointer puVar2;
  uint uVar3;
  uint in_a2;
  uint in_a3;
  pointer puVar4;
  pointer puVar5;
  byte bVar6;
  uint uVar7;
  
  do {
    while( true ) {
      uVar3 = in_a2 << 0x19;
      in_a2 = in_a2 >> 7;
      bVar6 = (byte)in_a3 & 0x7f;
      in_a3 = uVar3 | in_a3 >> 7;
      if (in_a2 != 0 || in_a3 != 0) {
        bVar6 = bVar6 | 0x80;
      }
      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.
               _M_finish;
      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).
                    _M_impl._M_end_of_storage) break;
      *pbVar1 = bVar6;
      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish
           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.
             _M_finish + 1;
      if (in_a2 == 0 && in_a3 == 0) {
        return;
      }
    }
    puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.
             _M_start;
    uVar3 = (int)pbVar1 - (int)puVar5;
    if (uVar3 == 0xffffffff) {
      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);
      return;
    }
    if (uVar3 == 0) {
      uVar7 = 1;
    }
    else {
      uVar7 = uVar3 * 2;
      if (uVar7 < uVar3) {
        uVar7 = 0xffffffff;
      }
    }
    puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);
    puVar2[uVar3] = bVar6;
    if (uVar3 == 0) {
      puVar4 = puVar2 + 1;
      if (puVar5 != (pointer)0x0) goto LAB_0011c514;
    }
    else {
      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);
      puVar4 = puVar2 + uVar3 + 1;
LAB_0011c514:
      (*(code *)PTR_operator_delete_0043228c)(puVar5);
    }
    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =
         puVar2;
    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =
         puVar4;
    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.
    _M_end_of_storage = puVar2 + uVar7;
    if (in_a2 == 0 && in_a3 == 0) {
      return;
    }
  } while( true );
}



/* gold::write_unsigned_LEB_128(std::vector<unsigned char, std::allocator<unsigned char> >*,
   unsigned long long) */

void gold::write_unsigned_LEB_128(vector *param_1,ulonglong param_2)

{
  byte *pbVar1;
  int iVar2;
  uint uVar3;
  uint in_a2;
  uint in_a3;
  int iVar4;
  int iVar5;
  byte bVar6;
  uint uVar7;
  
  do {
    while( true ) {
      uVar3 = in_a2 << 0x19;
      in_a2 = in_a2 >> 7;
      bVar6 = (byte)in_a3 & 0x7f;
      in_a3 = uVar3 | in_a3 >> 7;
      if (in_a2 != 0 || in_a3 != 0) {
        bVar6 = bVar6 | 0x80;
      }
      pbVar1 = *(byte **)(param_1 + 4);
      if (pbVar1 == *(byte **)(param_1 + 8)) break;
      *pbVar1 = bVar6;
      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      if (in_a2 == 0 && in_a3 == 0) {
        return;
      }
    }
    iVar5 = *(int *)param_1;
    uVar3 = (int)pbVar1 - iVar5;
    if (uVar3 == 0xffffffff) {
      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);
      return;
    }
    if (uVar3 == 0) {
      uVar7 = 1;
    }
    else {
      uVar7 = uVar3 * 2;
      if (uVar7 < uVar3) {
        uVar7 = 0xffffffff;
      }
    }
    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);
    *(byte *)(iVar2 + uVar3) = bVar6;
    if (uVar3 == 0) {
      iVar4 = iVar2 + 1;
      if (iVar5 != 0) goto LAB_0011c514;
    }
    else {
      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);
      iVar4 = iVar2 + uVar3 + 1;
LAB_0011c514:
      (*(code *)PTR_operator_delete_0043228c)(iVar5);
    }
    *(int *)param_1 = iVar2;
    *(int *)(param_1 + 4) = iVar4;
    *(uint *)(param_1 + 8) = iVar2 + uVar7;
    if (in_a2 == 0 && in_a3 == 0) {
      return;
    }
  } while( true );
}


lui gp,0x32
addiu gp,gp,-0x21fc
addu gp,gp,t9
addiu sp,sp,-0x40
sw gp,0x10(sp)
sw s3,0x24(sp)
or s3,a2,zero
sw s2,0x20(sp)
or s2,a3,zero
sw s1,0x1c(sp)
or s1,a0,zero
sw ra,0x3c(sp)
sw s8,0x38(sp)
sw s7,0x34(sp)
sw s6,0x30(sp)
sw s5,0x2c(sp)
sw s4,0x28(sp)
b 0x0011c42c
_sw s0,0x18(sp)
sb s6,0x0(v0)
lw v0,0x4(s1)
addiu v0,v0,0x1
beq s5,zero,0x0011c4c4
_sw v0,0x4(s1)
sll v1,s3,0x19
srl v0,s2,0x7
srl s3,s3,0x7
andi s6,s2,0x7f
or s2,v1,v0
or s5,s3,s2
beq s5,zero,0x0011c450
_nop
ori s6,s6,0x80
lw v0,0x4(s1)
lw v1,0x8(s1)
bne v0,v1,0x0011c418
_nop
lw s4,0x0(s1)
subu s0,v0,s4
li v0,-0x1
beq s0,v0,0x0011c530
_lw a0,-0x7e1c(gp)
beq s0,zero,0x0011c528
_li v1,-0x1
sll s7,s0,0x1
sltu v0,s7,s0
movn s7,v1,v0
lw t9,-0x7e94(gp)
jalr t9
_or a0,s7,zero
or s8,v0,zero
lw gp,0x10(sp)
addu v0,v0,s0
addu s7,s8,s7
bne s0,zero,0x0011c4f4
_sb s6,0x0(v0)
bne s4,zero,0x0011c514
_addiu s0,s8,0x1
sw s8,0x0(s1)
sw s0,0x4(s1)
bne s5,zero,0x0011c42c
_sw s7,0x8(s1)
lw ra,0x3c(sp)
lw s8,0x38(sp)
lw s7,0x34(sp)
lw s6,0x30(sp)
lw s5,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x3af8(gp)
or a2,s0,zero
or a1,s4,zero
or a0,s8,zero
jalr t9
_addiu s0,s0,0x1
lw gp,0x10(sp)
addu s0,s8,s0
lw t9,-0x7f44(gp)
jalr t9
_or a0,s4,zero
b 0x0011c4b4
_lw gp,0x10(sp)
b 0x0011c488
_li s7,0x1
lw t9,-0x7d50(gp)
jalr t9
_addiu a0,a0,-0x2c98
(translation_unit "/* gold::write_unsigned_LEB_128(std::vector<unsigned char, std::allocator<unsigned char> >*,\n   unsigned long long) */\n\nvoid gold::write_unsigned_LEB_128(vector *param_1,ulonglong param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}\n\n" comment (function_definition "void gold::write_unsigned_LEB_128(vector *param_1,ulonglong param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (ERROR "gold::" identifier : :) (function_declarator "write_unsigned_LEB_128(vector *param_1,ulonglong param_2)" identifier (parameter_list "(vector *param_1,ulonglong param_2)" ( (parameter_declaration "vector *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulonglong param_2" type_identifier identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (do_statement "do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  }" { (while_statement "while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" { (expression_statement "uVar3 = in_a2 << 0x19;" (assignment_expression "uVar3 = in_a2 << 0x19" identifier = (binary_expression "in_a2 << 0x19" identifier << number_literal)) ;) (expression_statement "in_a2 = in_a2 >> 7;" (assignment_expression "in_a2 = in_a2 >> 7" identifier = (binary_expression "in_a2 >> 7" identifier >> number_literal)) ;) (expression_statement "bVar6 = (byte)in_a3 & 0x7f;" (assignment_expression "bVar6 = (byte)in_a3 & 0x7f" identifier = (binary_expression "(byte)in_a3 & 0x7f" (cast_expression "(byte)in_a3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "in_a3 = uVar3 | in_a3 >> 7;" (assignment_expression "in_a3 = uVar3 | in_a3 >> 7" identifier = (binary_expression "uVar3 | in_a3 >> 7" identifier | (binary_expression "in_a3 >> 7" identifier >> number_literal))) ;) (if_statement "if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }" if (parenthesized_expression "(in_a2 != 0 || in_a3 != 0)" ( (binary_expression "in_a2 != 0 || in_a3 != 0" (binary_expression "in_a2 != 0" identifier != number_literal) || (binary_expression "in_a3 != 0" identifier != number_literal)) )) (compound_statement "{\n        bVar6 = bVar6 | 0x80;\n      }" { (expression_statement "bVar6 = bVar6 | 0x80;" (assignment_expression "bVar6 = bVar6 | 0x80" identifier = (binary_expression "bVar6 | 0x80" identifier | number_literal)) ;) })) (expression_statement "pbVar1 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar1 = *(byte **)(param_1 + 4)" identifier = (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pbVar1 == *(byte **)(param_1 + 8)) break;" if (parenthesized_expression "(pbVar1 == *(byte **)(param_1 + 8))" ( (binary_expression "pbVar1 == *(byte **)(param_1 + 8)" identifier == (pointer_expression "*(byte **)(param_1 + 8)" * (cast_expression "(byte **)(param_1 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (break_statement "break;" break ;)) (expression_statement "*pbVar1 = bVar6;" (assignment_expression "*pbVar1 = bVar6" (pointer_expression "*pbVar1" * identifier) = identifier) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "iVar5 = *(int *)param_1;" (assignment_expression "iVar5 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = (int)pbVar1 - iVar5;" (assignment_expression "uVar3 = (int)pbVar1 - iVar5" identifier = (binary_expression "(int)pbVar1 - iVar5" (cast_expression "(int)pbVar1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" { (expression_statement "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);" (call_expression "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98)" (parenthesized_expression "(*(code *)PTR___throw_length_error_00432480)" ( (pointer_expression "*(code *)PTR___throw_length_error_00432480" * (cast_expression "(code *)PTR___throw_length_error_00432480" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x2c98)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x2c98" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = 1;\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" else (compound_statement "{\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" { (expression_statement "uVar7 = uVar3 * 2;" (assignment_expression "uVar7 = uVar3 * 2" identifier = (binary_expression "uVar3 * 2" identifier * number_literal)) ;) (if_statement "if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar7 = 0xffffffff;\n      }" { (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) })) }))) (expression_statement "iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);" (assignment_expression "iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7)" identifier = (call_expression "(*(code *)PTR_operator_new_0043233c)(uVar7)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" ( (pointer_expression "*(code *)PTR_operator_new_0043233c" * (cast_expression "(code *)PTR_operator_new_0043233c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar7)" ( identifier )))) ;) (expression_statement "*(byte *)(iVar2 + uVar3) = bVar6;" (assignment_expression "*(byte *)(iVar2 + uVar3) = bVar6" (pointer_expression "*(byte *)(iVar2 + uVar3)" * (cast_expression "(byte *)(iVar2 + uVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar3)" ( (binary_expression "iVar2 + uVar3" identifier + identifier) )))) = identifier) ;) (if_statement "if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }" { (expression_statement "iVar4 = iVar2 + 1;" (assignment_expression "iVar4 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 != 0) goto LAB_0011c514;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011c514;" goto statement_identifier ;)) }) (else_clause "else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" else (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" { (expression_statement "(*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);" (call_expression "(*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,iVar5,uVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = iVar2 + uVar3 + 1;" (assignment_expression "iVar4 = iVar2 + uVar3 + 1" identifier = (binary_expression "iVar2 + uVar3 + 1" (binary_expression "iVar2 + uVar3" identifier + identifier) + number_literal)) ;) (labeled_statement "LAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);" statement_identifier : (expression_statement "(*(code *)PTR_operator_delete_0043228c)(iVar5);" (call_expression "(*(code *)PTR_operator_delete_0043228c)(iVar5)" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar5)" ( identifier ))) ;)) }))) (expression_statement "*(int *)param_1 = iVar2;" (assignment_expression "*(int *)param_1 = iVar2" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(int *)(param_1 + 4) = iVar4;" (assignment_expression "*(int *)(param_1 + 4) = iVar4" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 8) = iVar2 + uVar7;" (assignment_expression "*(uint *)(param_1 + 8) = iVar2 + uVar7" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar2 + uVar7" identifier + identifier)) ;) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void gold::write_unsigned_LEB_128\n               (vector<unsigned_char,_std::allocator<unsigned_char>_> *buffer,uint64_t value)\n\n{\n  byte *pbVar1;\n  pointer puVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  pointer puVar4;\n  pointer puVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start;\n    uVar3 = (int)pbVar1 - (int)puVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);\n    puVar2[uVar3] = bVar6;\n    if (uVar3 == 0) {\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void gold::write_unsigned_LEB_128\n               (vector<unsigned_char,_std::allocator<unsigned_char>_> *buffer,uint64_t value)\n\n{\n  byte *pbVar1;\n  pointer puVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  pointer puVar4;\n  pointer puVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start;\n    uVar3 = (int)pbVar1 - (int)puVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);\n    puVar2[uVar3] = bVar6;\n    if (uVar3 == 0) {\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (ERROR "gold::" identifier : :) (function_declarator "write_unsigned_LEB_128\n               (vector<unsigned_char,_std::allocator<unsigned_char>_> *buffer,uint64_t value)" identifier (parameter_list "(vector<unsigned_char,_std::allocator<unsigned_char>_> *buffer,uint64_t value)" ( (parameter_declaration "vector<unsigned_char" type_identifier (ERROR "<" <) identifier) , (parameter_declaration "_std::allocator<unsigned_char>_> *buffer" type_identifier (ERROR "::allocator<unsigned_char>_>" : : identifier < identifier > identifier >) (pointer_declarator "*buffer" * identifier)) , (parameter_declaration "uint64_t value" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  pointer puVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  pointer puVar4;\n  pointer puVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start;\n    uVar3 = (int)pbVar1 - (int)puVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);\n    puVar2[uVar3] = bVar6;\n    if (uVar3 == 0) {\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "pointer puVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "pointer puVar4;" type_identifier identifier ;) (declaration "pointer puVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (do_statement "do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start;\n    uVar3 = (int)pbVar1 - (int)puVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);\n    puVar2[uVar3] = bVar6;\n    if (uVar3 == 0) {\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start;\n    uVar3 = (int)pbVar1 - (int)puVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);\n    puVar2[uVar3] = bVar6;\n    if (uVar3 == 0) {\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4;\n    (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  }" { (while_statement "while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;\n      if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;\n      *pbVar1 = bVar6;\n      (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" { (expression_statement "uVar3 = in_a2 << 0x19;" (assignment_expression "uVar3 = in_a2 << 0x19" identifier = (binary_expression "in_a2 << 0x19" identifier << number_literal)) ;) (expression_statement "in_a2 = in_a2 >> 7;" (assignment_expression "in_a2 = in_a2 >> 7" identifier = (binary_expression "in_a2 >> 7" identifier >> number_literal)) ;) (expression_statement "bVar6 = (byte)in_a3 & 0x7f;" (assignment_expression "bVar6 = (byte)in_a3 & 0x7f" identifier = (binary_expression "(byte)in_a3 & 0x7f" (cast_expression "(byte)in_a3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "in_a3 = uVar3 | in_a3 >> 7;" (assignment_expression "in_a3 = uVar3 | in_a3 >> 7" identifier = (binary_expression "uVar3 | in_a3 >> 7" identifier | (binary_expression "in_a3 >> 7" identifier >> number_literal))) ;) (if_statement "if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }" if (parenthesized_expression "(in_a2 != 0 || in_a3 != 0)" ( (binary_expression "in_a2 != 0 || in_a3 != 0" (binary_expression "in_a2 != 0" identifier != number_literal) || (binary_expression "in_a3 != 0" identifier != number_literal)) )) (compound_statement "{\n        bVar6 = bVar6 | 0x80;\n      }" { (expression_statement "bVar6 = bVar6 | 0x80;" (assignment_expression "bVar6 = bVar6 | 0x80" identifier = (binary_expression "bVar6 | 0x80" identifier | number_literal)) ;) })) (expression_statement "pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish;" (assignment_expression "pbVar1 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish" identifier = (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n               _M_finish" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage) break;" if (parenthesized_expression "(pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage)" ( (binary_expression "pbVar1 == (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage" identifier == (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl._M_end_of_storage" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>).\n                    _M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) )) (break_statement "break;" break ;)) (expression_statement "*pbVar1 = bVar6;" (assignment_expression "*pbVar1 = bVar6" (pointer_expression "*pbVar1" * identifier) = identifier) ;) (expression_statement "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1;" (assignment_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish\n           = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish + 1" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_finish" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) + number_literal)) ;) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start;" (assignment_expression "puVar5 = (buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start" identifier = (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n             _M_start" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar3 = (int)pbVar1 - (int)puVar5;" (assignment_expression "uVar3 = (int)pbVar1 - (int)puVar5" identifier = (binary_expression "(int)pbVar1 - (int)puVar5" (cast_expression "(int)pbVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" { (expression_statement "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);" (call_expression "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98)" (parenthesized_expression "(*(code *)PTR___throw_length_error_00432480)" ( (pointer_expression "*(code *)PTR___throw_length_error_00432480" * (cast_expression "(code *)PTR___throw_length_error_00432480" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x2c98)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x2c98" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = 1;\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" else (compound_statement "{\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" { (expression_statement "uVar7 = uVar3 * 2;" (assignment_expression "uVar7 = uVar3 * 2" identifier = (binary_expression "uVar3 * 2" identifier * number_literal)) ;) (if_statement "if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar7 = 0xffffffff;\n      }" { (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) })) }))) (expression_statement "puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7);" (assignment_expression "puVar2 = (pointer)(*(code *)PTR_operator_new_0043233c)(uVar7)" identifier = (call_expression "(pointer)(*(code *)PTR_operator_new_0043233c)(uVar7)" (call_expression "(pointer)(*(code *)PTR_operator_new_0043233c)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(*(code *)PTR_operator_new_0043233c)" ( (pointer_expression "*(code *)PTR_operator_new_0043233c" * (cast_expression "(code *)PTR_operator_new_0043233c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(uVar7)" ( identifier )))) ;) (expression_statement "puVar2[uVar3] = bVar6;" (assignment_expression "puVar2[uVar3] = bVar6" (subscript_expression "puVar2[uVar3]" identifier [ identifier ]) = identifier) ;) (if_statement "if (uVar3 == 0) {\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar4 = puVar2 + 1;\n      if (puVar5 != (pointer)0x0) goto LAB_0011c514;\n    }" { (expression_statement "puVar4 = puVar2 + 1;" (assignment_expression "puVar4 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (if_statement "if (puVar5 != (pointer)0x0) goto LAB_0011c514;" if (parenthesized_expression "(puVar5 != (pointer)0x0)" ( (binary_expression "puVar5 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0011c514;" goto statement_identifier ;)) }) (else_clause "else {\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }" else (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);\n      puVar4 = puVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);\n    }" { (expression_statement "(*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3);" (call_expression "(*(code *)PTR_memmove_004366d8)(puVar2,puVar5,uVar3)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar2,puVar5,uVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar4 = puVar2 + uVar3 + 1;" (assignment_expression "puVar4 = puVar2 + uVar3 + 1" identifier = (binary_expression "puVar2 + uVar3 + 1" (binary_expression "puVar2 + uVar3" identifier + identifier) + number_literal)) ;) (labeled_statement "LAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(puVar5);" statement_identifier : (expression_statement "(*(code *)PTR_operator_delete_0043228c)(puVar5);" (call_expression "(*(code *)PTR_operator_delete_0043228c)(puVar5)" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5)" ( identifier ))) ;)) }))) (expression_statement "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2;" (assignment_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start =\n         puVar2" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_start" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4;" (assignment_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish =\n         puVar4" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl._M_finish" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7;" (assignment_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage = puVar2 + uVar7" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl.\n    _M_end_of_storage" (field_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)._M_impl" (parenthesized_expression "(buffer->super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>)" ( (ERROR "buffer->super__Vector_base<unsigned_char,_std::" (comma_expression "buffer->super__Vector_base<unsigned_char,_std" (binary_expression "buffer->super__Vector_base<unsigned_char" (field_expression "buffer->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_char>_>" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "puVar2 + uVar7" identifier + identifier)) ;) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void gold::write_unsigned_LEB_128(vector *param_1,ulonglong param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void gold::write_unsigned_LEB_128(vector *param_1,ulonglong param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (ERROR "gold::" identifier : :) (function_declarator "write_unsigned_LEB_128(vector *param_1,ulonglong param_2)" identifier (parameter_list "(vector *param_1,ulonglong param_2)" ( (parameter_declaration "vector *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulonglong param_2" type_identifier identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (do_statement "do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  }" { (while_statement "while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" { (expression_statement "uVar3 = in_a2 << 0x19;" (assignment_expression "uVar3 = in_a2 << 0x19" identifier = (binary_expression "in_a2 << 0x19" identifier << number_literal)) ;) (expression_statement "in_a2 = in_a2 >> 7;" (assignment_expression "in_a2 = in_a2 >> 7" identifier = (binary_expression "in_a2 >> 7" identifier >> number_literal)) ;) (expression_statement "bVar6 = (byte)in_a3 & 0x7f;" (assignment_expression "bVar6 = (byte)in_a3 & 0x7f" identifier = (binary_expression "(byte)in_a3 & 0x7f" (cast_expression "(byte)in_a3" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "in_a3 = uVar3 | in_a3 >> 7;" (assignment_expression "in_a3 = uVar3 | in_a3 >> 7" identifier = (binary_expression "uVar3 | in_a3 >> 7" identifier | (binary_expression "in_a3 >> 7" identifier >> number_literal))) ;) (if_statement "if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }" if (parenthesized_expression "(in_a2 != 0 || in_a3 != 0)" ( (binary_expression "in_a2 != 0 || in_a3 != 0" (binary_expression "in_a2 != 0" identifier != number_literal) || (binary_expression "in_a3 != 0" identifier != number_literal)) )) (compound_statement "{\n        bVar6 = bVar6 | 0x80;\n      }" { (expression_statement "bVar6 = bVar6 | 0x80;" (assignment_expression "bVar6 = bVar6 | 0x80" identifier = (binary_expression "bVar6 | 0x80" identifier | number_literal)) ;) })) (expression_statement "pbVar1 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar1 = *(byte **)(param_1 + 4)" identifier = (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pbVar1 == *(byte **)(param_1 + 8)) break;" if (parenthesized_expression "(pbVar1 == *(byte **)(param_1 + 8))" ( (binary_expression "pbVar1 == *(byte **)(param_1 + 8)" identifier == (pointer_expression "*(byte **)(param_1 + 8)" * (cast_expression "(byte **)(param_1 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (break_statement "break;" break ;)) (expression_statement "*pbVar1 = bVar6;" (assignment_expression "*pbVar1 = bVar6" (pointer_expression "*pbVar1" * identifier) = identifier) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "iVar5 = *(int *)param_1;" (assignment_expression "iVar5 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = (int)pbVar1 - iVar5;" (assignment_expression "uVar3 = (int)pbVar1 - iVar5" identifier = (binary_expression "(int)pbVar1 - iVar5" (cast_expression "(int)pbVar1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" { (expression_statement "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);" (call_expression "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98)" (parenthesized_expression "(*(code *)PTR___throw_length_error_00432480)" ( (pointer_expression "*(code *)PTR___throw_length_error_00432480" * (cast_expression "(code *)PTR___throw_length_error_00432480" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x2c98)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x2c98" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = 1;\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" else (compound_statement "{\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" { (expression_statement "uVar7 = uVar3 * 2;" (assignment_expression "uVar7 = uVar3 * 2" identifier = (binary_expression "uVar3 * 2" identifier * number_literal)) ;) (if_statement "if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar7 = 0xffffffff;\n      }" { (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) })) }))) (expression_statement "iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);" (assignment_expression "iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7)" identifier = (call_expression "(*(code *)PTR_operator_new_0043233c)(uVar7)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" ( (pointer_expression "*(code *)PTR_operator_new_0043233c" * (cast_expression "(code *)PTR_operator_new_0043233c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar7)" ( identifier )))) ;) (expression_statement "*(byte *)(iVar2 + uVar3) = bVar6;" (assignment_expression "*(byte *)(iVar2 + uVar3) = bVar6" (pointer_expression "*(byte *)(iVar2 + uVar3)" * (cast_expression "(byte *)(iVar2 + uVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar3)" ( (binary_expression "iVar2 + uVar3" identifier + identifier) )))) = identifier) ;) (if_statement "if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }" { (expression_statement "iVar4 = iVar2 + 1;" (assignment_expression "iVar4 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (iVar5 != 0) goto LAB_0011c514;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011c514;" goto statement_identifier ;)) }) (else_clause "else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" else (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" { (expression_statement "(*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);" (call_expression "(*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,iVar5,uVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = iVar2 + uVar3 + 1;" (assignment_expression "iVar4 = iVar2 + uVar3 + 1" identifier = (binary_expression "iVar2 + uVar3 + 1" (binary_expression "iVar2 + uVar3" identifier + identifier) + number_literal)) ;) (labeled_statement "LAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);" statement_identifier : (expression_statement "(*(code *)PTR_operator_delete_0043228c)(iVar5);" (call_expression "(*(code *)PTR_operator_delete_0043228c)(iVar5)" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar5)" ( identifier ))) ;)) }))) (expression_statement "*(int *)param_1 = iVar2;" (assignment_expression "*(int *)param_1 = iVar2" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(int *)(param_1 + 4) = iVar4;" (assignment_expression "*(int *)(param_1 + 4) = iVar4" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 8) = iVar2 + uVar7;" (assignment_expression "*(uint *)(param_1 + 8) = iVar2 + uVar7" (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar2 + uVar7" identifier + identifier)) ;) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void gold::write_unsigned_LEB_128(vector *param_1,ulonglong param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" (primitive_type "void") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (function_declarator "write_unsigned_LEB_128(vector *param_1,ulonglong param_2)" (identifier "write_unsigned_LEB_128") (parameter_list "(vector *param_1,ulonglong param_2)" (( "(") (parameter_declaration "vector *param_1" (type_identifier "vector") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulonglong param_2" (type_identifier "ulonglong") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  uint uVar3;\n  uint in_a2;\n  uint in_a3;\n  int iVar4;\n  int iVar5;\n  byte bVar6;\n  uint uVar7;\n  \n  do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint in_a2;" (type_identifier "uint") (identifier "in_a2") (; ";")) (declaration "uint in_a3;" (type_identifier "uint") (identifier "in_a3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (do_statement "do {\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }\n    iVar5 = *(int *)param_1;\n    uVar3 = (int)pbVar1 - iVar5;\n    if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }\n    if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }\n    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);\n    *(byte *)(iVar2 + uVar3) = bVar6;\n    if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }\n    *(int *)param_1 = iVar2;\n    *(int *)(param_1 + 4) = iVar4;\n    *(uint *)(param_1 + 8) = iVar2 + uVar7;\n    if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar3 = in_a2 << 0x19;\n      in_a2 = in_a2 >> 7;\n      bVar6 = (byte)in_a3 & 0x7f;\n      in_a3 = uVar3 | in_a3 >> 7;\n      if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }\n      pbVar1 = *(byte **)(param_1 + 4);\n      if (pbVar1 == *(byte **)(param_1 + 8)) break;\n      *pbVar1 = bVar6;\n      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }\n    }" ({ "{") (expression_statement "uVar3 = in_a2 << 0x19;" (assignment_expression "uVar3 = in_a2 << 0x19" (identifier "uVar3") (= "=") (binary_expression "in_a2 << 0x19" (identifier "in_a2") (<< "<<") (number_literal "0x19"))) (; ";")) (expression_statement "in_a2 = in_a2 >> 7;" (assignment_expression "in_a2 = in_a2 >> 7" (identifier "in_a2") (= "=") (binary_expression "in_a2 >> 7" (identifier "in_a2") (>> ">>") (number_literal "7"))) (; ";")) (expression_statement "bVar6 = (byte)in_a3 & 0x7f;" (assignment_expression "bVar6 = (byte)in_a3 & 0x7f" (identifier "bVar6") (= "=") (binary_expression "(byte)in_a3 & 0x7f" (cast_expression "(byte)in_a3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "in_a3")) (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "in_a3 = uVar3 | in_a3 >> 7;" (assignment_expression "in_a3 = uVar3 | in_a3 >> 7" (identifier "in_a3") (= "=") (binary_expression "uVar3 | in_a3 >> 7" (identifier "uVar3") (| "|") (binary_expression "in_a3 >> 7" (identifier "in_a3") (>> ">>") (number_literal "7")))) (; ";")) (if_statement "if (in_a2 != 0 || in_a3 != 0) {\n        bVar6 = bVar6 | 0x80;\n      }" (if "if") (parenthesized_expression "(in_a2 != 0 || in_a3 != 0)" (( "(") (binary_expression "in_a2 != 0 || in_a3 != 0" (binary_expression "in_a2 != 0" (identifier "in_a2") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "in_a3 != 0" (identifier "in_a3") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n        bVar6 = bVar6 | 0x80;\n      }" ({ "{") (expression_statement "bVar6 = bVar6 | 0x80;" (assignment_expression "bVar6 = bVar6 | 0x80" (identifier "bVar6") (= "=") (binary_expression "bVar6 | 0x80" (identifier "bVar6") (| "|") (number_literal "0x80"))) (; ";")) (} "}"))) (expression_statement "pbVar1 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar1 = *(byte **)(param_1 + 4)" (identifier "pbVar1") (= "=") (pointer_expression "*(byte **)(param_1 + 4)" (* "*") (cast_expression "(byte **)(param_1 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (pbVar1 == *(byte **)(param_1 + 8)) break;" (if "if") (parenthesized_expression "(pbVar1 == *(byte **)(param_1 + 8))" (( "(") (binary_expression "pbVar1 == *(byte **)(param_1 + 8)" (identifier "pbVar1") (== "==") (pointer_expression "*(byte **)(param_1 + 8)" (* "*") (cast_expression "(byte **)(param_1 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*pbVar1 = bVar6;" (assignment_expression "*pbVar1 = bVar6" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n        return;\n      }" (if "if") (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" (( "(") (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" (identifier "in_a2") (== "==") (number_literal "0")) (&& "&&") (binary_expression "in_a3 == 0" (identifier "in_a3") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar5 = *(int *)param_1;" (assignment_expression "iVar5 = *(int *)param_1" (identifier "iVar5") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (expression_statement "uVar3 = (int)pbVar1 - iVar5;" (assignment_expression "uVar3 = (int)pbVar1 - iVar5" (identifier "uVar3") (= "=") (binary_expression "(int)pbVar1 - iVar5" (cast_expression "(int)pbVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar1")) (- "-") (identifier "iVar5"))) (; ";")) (if_statement "if (uVar3 == 0xffffffff) {\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar3 == 0xffffffff)" (( "(") (binary_expression "uVar3 == 0xffffffff" (identifier "uVar3") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);" (call_expression "(*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98)" (parenthesized_expression "(*(code *)PTR___throw_length_error_00432480)" (( "(") (pointer_expression "*(code *)PTR___throw_length_error_00432480" (* "*") (cast_expression "(code *)PTR___throw_length_error_00432480" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_length_error_00432480"))) () ")")) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x2c98)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + -0x2c98" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "-0x2c98")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar3 == 0) {\n      uVar7 = 1;\n    }\n    else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = 1;\n    }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" (else "else") (compound_statement "{\n      uVar7 = uVar3 * 2;\n      if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }\n    }" ({ "{") (expression_statement "uVar7 = uVar3 * 2;" (assignment_expression "uVar7 = uVar3 * 2" (identifier "uVar7") (= "=") (binary_expression "uVar3 * 2" (identifier "uVar3") (* "*") (number_literal "2"))) (; ";")) (if_statement "if (uVar7 < uVar3) {\n        uVar7 = 0xffffffff;\n      }" (if "if") (parenthesized_expression "(uVar7 < uVar3)" (( "(") (binary_expression "uVar7 < uVar3" (identifier "uVar7") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar7 = 0xffffffff;\n      }" ({ "{") (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" (identifier "uVar7") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);" (assignment_expression "iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_operator_new_0043233c)(uVar7)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" (( "(") (pointer_expression "*(code *)PTR_operator_new_0043233c" (* "*") (cast_expression "(code *)PTR_operator_new_0043233c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new_0043233c"))) () ")")) (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "*(byte *)(iVar2 + uVar3) = bVar6;" (assignment_expression "*(byte *)(iVar2 + uVar3) = bVar6" (pointer_expression "*(byte *)(iVar2 + uVar3)" (* "*") (cast_expression "(byte *)(iVar2 + uVar3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + uVar3)" (( "(") (binary_expression "iVar2 + uVar3" (identifier "iVar2") (+ "+") (identifier "uVar3")) () ")")))) (= "=") (identifier "bVar6")) (; ";")) (if_statement "if (uVar3 == 0) {\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }\n    else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar4 = iVar2 + 1;\n      if (iVar5 != 0) goto LAB_0011c514;\n    }" ({ "{") (expression_statement "iVar4 = iVar2 + 1;" (assignment_expression "iVar4 = iVar2 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_0011c514;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011c514;" (goto "goto") (statement_identifier "LAB_0011c514") (; ";"))) (} "}")) (else_clause "else {\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" (else "else") (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);\n      iVar4 = iVar2 + uVar3 + 1;\nLAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);\n    }" ({ "{") (expression_statement "(*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);" (call_expression "(*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" (( "(") (pointer_expression "*(code *)PTR_memmove_004366d8" (* "*") (cast_expression "(code *)PTR_memmove_004366d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_004366d8"))) () ")")) (argument_list "(iVar2,iVar5,uVar3)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar5") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar4 = iVar2 + uVar3 + 1;" (assignment_expression "iVar4 = iVar2 + uVar3 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar2 + uVar3 + 1" (binary_expression "iVar2 + uVar3" (identifier "iVar2") (+ "+") (identifier "uVar3")) (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0011c514:\n      (*(code *)PTR_operator_delete_0043228c)(iVar5);" (statement_identifier "LAB_0011c514") (: ":") (expression_statement "(*(code *)PTR_operator_delete_0043228c)(iVar5);" (call_expression "(*(code *)PTR_operator_delete_0043228c)(iVar5)" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_0043228c" (* "*") (cast_expression "(code *)PTR_operator_delete_0043228c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_0043228c"))) () ")")) (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";"))) (} "}")))) (expression_statement "*(int *)param_1 = iVar2;" (assignment_expression "*(int *)param_1 = iVar2" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(int *)(param_1 + 4) = iVar4;" (assignment_expression "*(int *)(param_1 + 4) = iVar4" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*(uint *)(param_1 + 8) = iVar2 + uVar7;" (assignment_expression "*(uint *)(param_1 + 8) = iVar2 + uVar7" (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar2 + uVar7" (identifier "iVar2") (+ "+") (identifier "uVar7"))) (; ";")) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" (( "(") (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" (identifier "in_a2") (== "==") (number_literal "0")) (&& "&&") (binary_expression "in_a3 == 0" (identifier "in_a3") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void gold::function_1
               (type_1<var_6,type_2::var_5<var_6>var_7> *buffer,uint64_t value)

{
  type_3 *var_9;
  type_4 var_12;
  type_5 var_2;
  type_5 var_1;
  type_5 var_3;
  type_4 puVar4;
  type_4 var_13;
  type_3 var_4;
  type_5 var_11;
  
  do {
    while( true ) {
      var_2 = var_1 << 0x19;
      var_1 = var_1 >> 7;
      var_4 = (type_3)var_3 & 0x7f;
      var_3 = var_2 | var_3 >> 7;
      if (var_1 != 0 || var_3 != 0) {
        var_4 = var_4 | 0x80;
      }
      var_9 = (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl.
               _M_finish;
      if (var_9 == (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8).
                    _M_impl._M_end_of_storage) break;
      *var_9 = var_4;
      (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl._M_finish
           = (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl.
             _M_finish + 1;
      if (var_1 == 0 && var_3 == 0) {
        return;
      }
    }
    var_13 = (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl.
             _M_start;
    var_2 = (int)var_9 - (int)var_13;
    if (var_2 == 0xffffffff) {
      (*(type_6 *)PTR___throw_length_error_00432480)(var_10 + -0x2c98);
      return;
    }
    if (var_2 == 0) {
      var_11 = 1;
    }
    else {
      var_11 = var_2 * 2;
      if (var_11 < var_2) {
        var_11 = 0xffffffff;
      }
    }
    var_12 = (type_4)(*(type_6 *)PTR_operator_new_0043233c)(var_11);
    var_12[var_2] = var_4;
    if (var_2 == 0) {
      puVar4 = var_12 + 1;
      if (var_13 != (type_4)0x0) goto LAB_0011c514;
    }
    else {
      (*(type_6 *)PTR_memmove_004366d8)(var_12,var_13,var_2);
      puVar4 = var_12 + var_2 + 1;
LAB_0011c514:
      (*(type_6 *)PTR_operator_delete_0043228c)(var_13);
    }
    (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl._M_start =
         var_12;
    (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl._M_finish =
         puVar4;
    (buffer->super__Vector_base<var_6,type_2::var_5<var_6>var_7>var_8)._M_impl.
    _M_end_of_storage = var_12 + var_11;
    if (var_1 == 0 && var_3 == 0) {
      return;
    }
  } while( true );
}


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

/* gold::MASKED(std::vector<unsigned char, std::allocator<unsigned char> >*,
   unsigned long long) */

void gold::MASKED(vector *param_1,ulonglong param_2)

{
  byte *pbVar1;
  int iVar2;
  uint uVar3;
  uint in_a2;
  uint in_a3;
  int iVar4;
  int iVar5;
  byte bVar6;
  uint uVar7;
  
  do {
    while( true ) {
      uVar3 = in_a2 << 0x19;
      in_a2 = in_a2 >> 7;
      bVar6 = (byte)in_a3 & 0x7f;
      in_a3 = uVar3 | in_a3 >> 7;
      if (in_a2 != 0 || in_a3 != 0) {
        bVar6 = bVar6 | 0x80;
      }
      pbVar1 = *(byte **)(param_1 + 4);
      if (pbVar1 == *(byte **)(param_1 + 8)) break;
      *pbVar1 = bVar6;
      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      if (in_a2 == 0 && in_a3 == 0) {
        return;
      }
    }
    iVar5 = *(int *)param_1;
    uVar3 = (int)pbVar1 - iVar5;
    if (uVar3 == 0xffffffff) {
      (*(code *)PTR___throw_length_error_00432480)(PTR_s_alize_xindex_004323b4 + -0x2c98);
      return;
    }
    if (uVar3 == 0) {
      uVar7 = 1;
    }
    else {
      uVar7 = uVar3 * 2;
      if (uVar7 < uVar3) {
        uVar7 = 0xffffffff;
      }
    }
    iVar2 = (*(code *)PTR_operator_new_0043233c)(uVar7);
    *(byte *)(iVar2 + uVar3) = bVar6;
    if (uVar3 == 0) {
      iVar4 = iVar2 + 1;
      if (iVar5 != 0) goto LAB_0011c514;
    }
    else {
      (*(code *)PTR_memmove_004366d8)(iVar2,iVar5,uVar3);
      iVar4 = iVar2 + uVar3 + 1;
LAB_0011c514:
      (*(code *)PTR_operator_delete_0043228c)(iVar5);
    }
    *(int *)param_1 = iVar2;
    *(int *)(param_1 + 4) = iVar4;
    *(uint *)(param_1 + 8) = iVar2 + uVar7;
    if (in_a2 == 0 && in_a3 == 0) {
      return;
    }
  } while( true );
}

