LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_codeitem
void dxb_codeitem(ByteStream* bs, DexCodeItem* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*) &(obj->registers_size),sizeof(uint16_t));
  bswrite(bs,(uint8_t*) &(obj->ins_size),sizeof(uint16_t));
  bswrite(bs,(uint8_t*) &(obj->outs_size),sizeof(uint16_t));
  bswrite(bs,(uint8_t*) &(obj->tries_size),sizeof(uint16_t));
  bswrite(bs,(uint8_t*) &(obj->debug_info_off),sizeof(uint32_t));
  bswrite(bs,(uint8_t*) &(obj->insns_size),sizeof(uint32_t));

  for (i=0; i<obj->insns_size; i++)
    bswrite(bs,(uint8_t*) &(obj->insns[i]),sizeof(uint16_t));

  if (obj->tries_size > 0) {
    if (obj->insns_size % 2 != 0)
      bswrite(bs,(uint8_t*) &(obj->padding),sizeof(uint16_t));

    for (i=0; i<obj->tries_size; i++)
     dxb_tryitem(bs,obj->tries[i]);

    dxb_encodedcatchhandlerlist(bs,obj->handlers);    
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5cfe
cmpq $0x0, -0x10(%rbp)
jne 0x5d03
jmp 0x5e50
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x2, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0xa, %rsi
movl $0x2, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0xc, %rsi
movl $0x2, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0xe, %rsi
movl $0x2, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x10, %rsi
movl $0x4, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x14, %rsi
movl $0x4, %edx
callq 0x4690
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jae 0x5dd4
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
movl -0x14(%rbp), %eax
shlq %rax
addq %rax, %rsi
movl $0x2, %edx
callq 0x4690
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x5d9e
movq -0x10(%rbp), %rax
movzwl 0xe(%rax), %eax
cmpl $0x0, %eax
jle 0x5e50
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x5e06
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x20, %rsi
movl $0x2, %edx
callq 0x4690
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
movzwl 0xe(%rcx), %ecx
cmpl %ecx, %eax
jae 0x5e3f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x4930
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x5e0d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x49e0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_debuginfo
void dxb_debuginfo(ByteStream* bs, DexDebugInfo* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  l128write(bs,&(obj->line_start));
  l128write(bs,&(obj->parameters_size));

  for (i=0; i<ul128toui(obj->parameters_size); i++)
    l128write(bs,&(obj->parameter_names[i]));

  dxb_debug_state_machine(bs,obj->state_machine);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5e7e
cmpq $0x0, -0x10(%rbp)
jne 0x5e83
jmp 0x5f20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x4570
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x14, %rsi
callq 0x4570
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x24(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x24(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x28(%rbp), %eax
cmpl %ecx, %eax
jae 0x5f0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rsi
movl -0x14(%rbp), %eax
imulq $0xc, %rax, %rax
addq %rax, %rsi
callq 0x4570
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x5ebc
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x4390
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_debug_state_machine
void dxb_debug_state_machine(ByteStream* bs, uint8_t* obj) {
  uint32_t size;

  if (bs == NULL || obj == NULL) return;

  size = ((uint32_t*) obj)[0];

  bswrite(bs,(obj+sizeof(uint32_t)),size);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5f4e
cmpq $0x0, -0x10(%rbp)
jne 0x5f50
jmp 0x5f6d
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x4, %rsi
movl -0x14(%rbp), %edx
callq 0x4690
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_maplist
void dxb_maplist(ByteStream* bs, DexMapList* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*)&(obj->size),sizeof(uint32_t));

  for (i=0; i<obj->size; i++)
    dxb_mapitem(bs,obj->list[i]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5fee
cmpq $0x0, -0x10(%rbp)
jne 0x5ff0
jmp 0x604c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4690
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x604c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x47b0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x601d
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_encodedvalue
void dxb_encodedvalue(ByteStream* bs, DexEncodedValue* obj) {
  int i;

  uint8_t value_type;
  uint8_t value_arg;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*)&(obj->argtype),sizeof(uint8_t));

  value_type = (obj->argtype & 0x1f);
  value_arg  = ((obj->argtype >> 5) & 0x7);
	       
  switch (value_type) {
  case 0x00:
    bswrite(bs,(uint8_t*) obj->value,sizeof(uint8_t));
    break;
  case 0x02:
  case 0x03:
  case 0x04:
  case 0x06:
  case 0x10:
  case 0x11:
  case 0x17:
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
    for (i=0; i<value_arg+1; i++)
      bswrite(bs,(uint8_t*) &(obj->value[i]),sizeof(uint8_t));   

    break;
  case 0x1c:
    dxb_encodedarray(bs,(DexEncodedArray*) obj->value);
    break;
  case 0x1d:
    dxb_encodedannotation(bs,(DexEncodedAnnotation*)obj->value);
    break;
  case 0x1e:
  case 0x1f:
    break;
  default:
    break;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x607e
cmpq $0x0, -0x10(%rbp)
jne 0x6083
jmp 0x616a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x1, %edx
callq 0x4690
movq -0x10(%rbp), %rax
movb 0x8(%rax), %al
andb $0x1f, %al
movb %al, -0x15(%rbp)
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
shrl $0x5, %eax
movb %al, -0x16(%rbp)
movzbl -0x15(%rbp), %eax
movq %rax, -0x20(%rbp)
subq $0x1f, %rax
ja 0x6168
movq -0x20(%rbp), %rax
leaq 0x7fe4(%rip), %rcx      # 0xe0c4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0x1, %edx
callq 0x4690
jmp 0x616a
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movzbl -0x16(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jge 0x613e
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
movslq -0x14(%rbp), %rax
addq %rax, %rsi
movl $0x1, %edx
callq 0x4690
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x6108
jmp 0x616a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x4940
jmp 0x616a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x49d0
jmp 0x616a
jmp 0x616a
jmp 0x616a
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_encodedarray
void dxb_encodedarray(ByteStream* bs, DexEncodedArray* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  l128write(bs,&(obj->size));

  for (i=0; i<ul128toui(obj->size); i++)
    dxb_encodedvalue(bs,obj->values[i]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x618e
cmpq $0x0, -0x10(%rbp)
jne 0x6190
jmp 0x6208
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x4570
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x28(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x28(%rbp), %rdi
movl -0x20(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x2c(%rbp), %eax
cmpl %ecx, %eax
jae 0x6208
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x49f0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x61b8
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_encodedannotation
void dxb_encodedannotation(ByteStream* bs, DexEncodedAnnotation* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  l128write(bs,&(obj->type_idx));
  l128write(bs,&(obj->size));

  for (i=0; i<ul128toui(obj->size); i++)
    dxb_annotationelement(bs,obj->elements[i]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x622e
cmpq $0x0, -0x10(%rbp)
jne 0x6233
jmp 0x62bc
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x4570
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x14, %rsi
callq 0x4570
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x24(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x24(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x28(%rbp), %eax
cmpl %ecx, %eax
jae 0x62bc
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x4490
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x626c
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_annotationelement
void dxb_annotationelement(ByteStream* bs, DexAnnotationElement* obj) {
  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  l128write(bs,&(obj->name_idx));

  dxb_encodedvalue(bs,obj->value);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x62ee
cmpq $0x0, -0x10(%rbp)
jne 0x62f0
jmp 0x6322
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x4570
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x49f0
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_annotationdirectoryitem
void dxb_annotationdirectoryitem(ByteStream* bs, DexAnnotationDirectoryItem* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*) &(obj->class_annotations_off),sizeof(uint32_t));
  bswrite(bs,(uint8_t*) &(obj->fields_size),sizeof(uint32_t));
  bswrite(bs,(uint8_t*) &(obj->annotated_methods_size),sizeof(uint32_t));
  bswrite(bs,(uint8_t*) &(obj->annotated_parameters_size),sizeof(uint32_t));

  for (i=0; i<obj->fields_size; i++)
    dxb_fieldannotation(bs,obj->field_annotations[i]);

  for (i=0; i<obj->annotated_methods_size; i++)
    dxb_methodannotation(bs,obj->method_annotations[i]);
  
  for (i=0; i<obj->annotated_parameters_size; i++)
    dxb_parameterannotation(bs,obj->parameter_annotations[i]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x643e
cmpq $0x0, -0x10(%rbp)
jne 0x6443
jmp 0x654d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0xc, %rsi
movl $0x4, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x10, %rsi
movl $0x4, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x14, %rsi
movl $0x4, %edx
callq 0x4690
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jae 0x64e1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x4950
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x64b2
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x6517
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x4470
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x64e8
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jae 0x654d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x4680
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x651e
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_annotationsetreflist
void dxb_annotationsetreflist(ByteStream* bs, DexAnnotationSetRefList* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*) &(obj->size),sizeof(uint32_t));

  for (i=0; i<obj->size; i++)
    dxb_annotationsetrefitem(bs,obj->list[i]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x65ce
cmpq $0x0, -0x10(%rbp)
jne 0x65d0
jmp 0x662c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4690
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x662c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x47c0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x65fd
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_annotationsetitem
void dxb_annotationsetitem(ByteStream* bs, DexAnnotationSetItem* obj) {
  unsigned int i;

  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*) &(obj->size),sizeof(uint32_t));

  for (i=0; i<obj->size; i++)
    dxb_annotationoffitem(bs,obj->entries[i]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x66ae
cmpq $0x0, -0x10(%rbp)
jne 0x66b0
jmp 0x670c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4690
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x670c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x41f0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x66dd
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_builder.c
// Function: dxb_annotationitem
void dxb_annotationitem(ByteStream* bs, DexAnnotationItem* obj) {
  if (bs == NULL || obj == NULL) return;

  bsseek(bs,obj->meta.offset);

  bswrite(bs,(uint8_t*) &(obj->visibility),sizeof(uint8_t));

  dxb_encodedannotation(bs,obj->annotation);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x673e
cmpq $0x0, -0x10(%rbp)
jne 0x6740
jmp 0x6777
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movl $0x1, %edx
callq 0x4690
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x49d0
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dxread
int dxread(ByteStream* bs, uint8_t* buf, size_t size) {
  Metadata* meta = (Metadata*) buf;
  uint8_t* ptr = buf += sizeof(Metadata);
  size_t data_size = size - sizeof(Metadata);
  unsigned int ret;

  meta->offset = bs->offset;
  ret =  bsread(bs,ptr,data_size);
  meta->corrupted = (ret != data_size);

  return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x10(%rbp)
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
subq $0x8, %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x4500
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpq -0x30(%rbp), %rax
setne %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movl -0x34(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_encodedfield
DexEncodedFieldItem* dx_encodedfield(ByteStream* bs, uint32_t offset) {
  DexEncodedFieldItem* res;
  int check;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexEncodedFieldItem,res);

  bsseek(bs,offset);

  check  = l128read(bs,&(res->field_idx_diff));
  check |= l128read(bs,&(res->access_flags));

  res->meta.corrupted = check || bs->exhausted;
  
  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7213
movq $0x0, -0x8(%rbp)
jmp 0x7298
jmp 0x7215
movl $0x20, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x14, %rsi
callq 0x4910
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x25(%rbp)
jne 0x7284
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_encodedmethod
DexEncodedMethodItem* dx_encodedmethod(ByteStream* bs, uint32_t offset) {
  DexEncodedMethodItem* res;
  int check;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexEncodedMethodItem,res);

  bsseek(bs,offset);

  check  = l128read(bs,&(res->method_idx_diff));
  check |= l128read(bs,&(res->access_flags));
  check |= l128read(bs,&(res->code_off));

  res->meta.corrupted = check || bs->exhausted;
  
  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x72d3
movq $0x0, -0x8(%rbp)
jmp 0x736f
jmp 0x72d5
movl $0x2c, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x14, %rsi
callq 0x4910
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x20, %rsi
callq 0x4910
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x25(%rbp)
jne 0x735b
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_typelist
DexTypeList* dx_typelist(ByteStream* bs, uint32_t offset) {
  DexTypeList* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexTypeList,res);

  bsseek(bs,offset);

  check = bsread(bs,(uint8_t*) &(res->size),sizeof(uint32_t));

  res->meta.corrupted = (check != sizeof(uint32_t));
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexTypeItem*,res->list,res->size);

  for (i=0; i<res->size; i++)
    res->list[i] = dx_typeitem(bs,bs->offset);

  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x78c3
movq $0x0, -0x8(%rbp)
jmp 0x79b4
jmp 0x78c5
movl $0x18, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4500
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rax
cmpq $0x4, %rax
setne %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x7933
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x79b4
jmp 0x7935
movq -0x20(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x795e
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x796a
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
jmp 0x796c
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x79ac
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4260
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x7973
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_encodedtypeaddrpair
DexEncodedTypeAddrPair* dx_encodedtypeaddrpair(ByteStream* bs, uint32_t offset) {
  DexEncodedTypeAddrPair* res;
  int check;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexEncodedTypeAddrPair,res);

  bsseek(bs,offset);

  check  = l128read(bs,&(res->type_idx));
  check |= l128read(bs,&(res->addr));

  res->meta.corrupted = check || bs->exhausted;
  
  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7a63
movq $0x0, -0x8(%rbp)
jmp 0x7ae8
jmp 0x7a65
movl $0x20, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x14, %rsi
callq 0x4910
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x25(%rbp)
jne 0x7ad4
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_encodedcatchhandlerlist
DexEncodedCatchHandlerList* dx_encodedcatchhandlerlist(ByteStream* bs, uint32_t offset) {
  DexEncodedCatchHandlerList* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexEncodedCatchHandlerList,res);

  bsseek(bs,offset);

  check  = l128read(bs,&(res->size));

  res->meta.corrupted = check;
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexEncodedCatchHandler*,res->list,ul128toui(res->size));

  for (i=0; i<ul128toui(res->size); i++)
    res->list[i] = dx_encodedcatchhandler(bs,bs->offset);

  res->meta.corrupted = check || bs->exhausted;
  
  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7cf3
movq $0x0, -0x8(%rbp)
jmp 0x7e53
jmp 0x7cf5
movl $0x20, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
setne %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x7d5a
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7e53
jmp 0x7d5c
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x38(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movl -0x30(%rbp), %esi
callq 0x41c0
cmpl $0x0, %eax
je 0x7db7
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x48(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movl -0x40(%rbp), %esi
callq 0x41c0
movl %eax, %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x7dc3
movq -0x20(%rbp), %rax
movq $0x0, 0x18(%rax)
jmp 0x7dc5
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x5c(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x58(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x50(%rbp)
movq -0x58(%rbp), %rdi
movl -0x50(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x5c(%rbp), %eax
cmpl %ecx, %eax
jae 0x7e26
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x45d0
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x7dcc
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x5d(%rbp)
jne 0x7e3f
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x5d(%rbp)
movb -0x5d(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_debuginfo
DexDebugInfo* dx_debuginfo(ByteStream* bs, uint32_t offset) {
  DexDebugInfo* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexDebugInfo,res);

  bsseek(bs,offset);

  check  = l128read(bs,&(res->line_start));
  check |= l128read(bs,&(res->parameters_size));

  res->meta.corrupted = check || bs->exhausted;
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(leb128_t,res->parameter_names,ul128toui(res->parameters_size));

  for (i=0; i<ul128toui(res->parameters_size); i++)
    l128read(bs,&(res->parameter_names[i]));

  res->state_machine = dx_debug_state_machine(bs,bs->offset);

  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x80c3
movq $0x0, -0x8(%rbp)
jmp 0x823c
jmp 0x80c5
movl $0x30, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x14, %rsi
callq 0x4910
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x59(%rbp)
jne 0x8134
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x8156
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x823c
jmp 0x8158
movq -0x20(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x38(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movl -0x30(%rbp), %esi
callq 0x41c0
cmpl $0x0, %eax
je 0x81b1
movq -0x20(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x48(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movl -0x40(%rbp), %esi
callq 0x41c0
movl %eax, %eax
imulq $0xc, %rax, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x81bd
movq -0x20(%rbp), %rax
movq $0x0, 0x20(%rax)
jmp 0x81bf
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x58(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x50(%rbp)
movq -0x58(%rbp), %rdi
movl -0x50(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x60(%rbp), %eax
cmpl %ecx, %eax
jae 0x8219
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rsi
movl -0x28(%rbp), %eax
imulq $0xc, %rax, %rax
addq %rax, %rsi
callq 0x4910
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x81c6
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4190
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_debug_state_machine
uint8_t* dx_debug_state_machine(ByteStream* bs, uint32_t offset) {
  uint32_t size = 1;
  uint8_t opcode;
  leb128_t leb;
  uint8_t* res;

  bsseek(bs,offset);
  bsread(bs,&opcode,1);

  while (opcode != 0x0) {
    switch (opcode) {
    case 0x1:
    case 0x2:
    case 0x5:
    case 0x6:
    case 0x9:
      l128read(bs,&leb);
      break;
    case 0x3:
      l128read(bs,&leb);
      l128read(bs,&leb);
      l128read(bs,&leb);
      break;
    case 0x4:
      l128read(bs,&leb);
      l128read(bs,&leb);
      l128read(bs,&leb);
      l128read(bs,&leb);
    default:
      break;
    }

    bsread(bs,&opcode,1);
  }

  size = bs->offset - offset;

  DX_ALLOC_LIST(uint8_t,res,size + sizeof(uint32_t));  

  bsseek(bs,offset);
  bsread(bs,(res+sizeof(uint32_t)),size);

  ((uint32_t*) res)[0] = size;

  return res;    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x1, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
leaq -0x11(%rbp), %rsi
movl $0x1, %edx
callq 0x4500
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
je 0x8351
movzbl -0x11(%rbp), %eax
movl %eax, -0x2c(%rbp)
decl %eax
subl $0x2, %eax
jb 0x82cc
jmp 0x82a1
movl -0x2c(%rbp), %eax
subl $0x3, %eax
je 0x82db
jmp 0x82ab
movl -0x2c(%rbp), %eax
subl $0x4, %eax
je 0x8304
jmp 0x82b5
movl -0x2c(%rbp), %eax
addl $-0x5, %eax
subl $0x2, %eax
jb 0x82cc
jmp 0x82c2
movl -0x2c(%rbp), %eax
subl $0x9, %eax
jne 0x8338
jmp 0x82cc
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
jmp 0x833a
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
jmp 0x833a
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
movq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4910
jmp 0x833a
movq -0x8(%rbp), %rdi
leaq -0x11(%rbp), %rsi
movl $0x1, %edx
callq 0x4500
jmp 0x8284
movq -0x8(%rbp), %rax
movl 0x18(%rax), %eax
subl -0xc(%rbp), %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
addq $0x4, %rax
cmpq $0x0, %rax
je 0x8383
movl -0x10(%rbp), %eax
movl %eax, %edi
addq $0x4, %rdi
shlq $0x0, %rdi
callq 0x4750
movq %rax, -0x28(%rbp)
jmp 0x838b
movq $0x0, -0x28(%rbp)
jmp 0x838d
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x44f0
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
addq $0x4, %rsi
movl -0x10(%rbp), %eax
movl %eax, %edx
callq 0x4500
movl -0x10(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_maplist
DexMapList* dx_maplist(ByteStream* bs, uint32_t offset) {
  DexMapList* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexMapList,res);

  bsseek(bs,offset);

  check = bsread(bs,(uint8_t*)&(res->size),sizeof(uint32_t));

  res->meta.corrupted = (check != sizeof(uint32_t));
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexMapItem*,res->list,res->size);  

  for (i=0; i<res->size; i++)
    res->list[i] = dx_mapitem(bs,bs->offset);

  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x8473
movq $0x0, -0x8(%rbp)
jmp 0x8564
jmp 0x8475
movl $0x18, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4500
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rax
cmpq $0x4, %rax
setne %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x84e3
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x8564
jmp 0x84e5
movq -0x20(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x850e
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x851a
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
jmp 0x851c
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x855c
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4140
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x8523
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_encodedarray
DexEncodedArray* dx_encodedarray(ByteStream* bs, uint32_t offset) {
  DexEncodedArray* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  bsseek(bs,offset);

  DX_ALLOC(DexEncodedArray,res);

  check = l128read(bs,&(res->size));

  res->meta.corrupted = (check || bs->exhausted);
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexEncodedValue*,res->values,ul128toui(res->size));

  for (i=0; i<ul128toui(res->size); i++)
    res->values[i] = dx_encodedvalue(bs,bs->offset);

  return res;  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x8783
movq $0x0, -0x8(%rbp)
jmp 0x88d1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movl $0x20, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x59(%rbp)
jne 0x87db
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x87fd
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x88d1
jmp 0x87ff
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x38(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movl -0x30(%rbp), %esi
callq 0x41c0
cmpl $0x0, %eax
je 0x885a
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x48(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movl -0x40(%rbp), %esi
callq 0x41c0
movl %eax, %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x8866
movq -0x20(%rbp), %rax
movq $0x0, 0x18(%rax)
jmp 0x8868
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x58(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x50(%rbp)
movq -0x58(%rbp), %rdi
movl -0x50(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x60(%rbp), %eax
cmpl %ecx, %eax
jae 0x88c9
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4980
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x886f
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_encodedannotation
DexEncodedAnnotation* dx_encodedannotation(ByteStream* bs, uint32_t offset) {
  DexEncodedAnnotation* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  bsseek(bs,offset);

  DX_ALLOC(DexEncodedAnnotation,res);

  check  = l128read(bs,&(res->type_idx));
  check |= l128read(bs,&(res->size));

  res->meta.corrupted = (check || bs->exhausted);
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexAnnotationElement*,res->elements,ul128toui(res->size));

  for (i=0; i<ul128toui(res->size); i++)
    res->elements[i] = dx_annotationelement(bs,bs->offset);

  return res;  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x8903
movq $0x0, -0x8(%rbp)
jmp 0x8a68
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movl $0x28, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x14, %rsi
callq 0x4910
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x59(%rbp)
jne 0x8972
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x8994
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x8a68
jmp 0x8996
movq -0x20(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x38(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movl -0x30(%rbp), %esi
callq 0x41c0
cmpl $0x0, %eax
je 0x89f1
movq -0x20(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x48(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movl -0x40(%rbp), %esi
callq 0x41c0
movl %eax, %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x89fd
movq -0x20(%rbp), %rax
movq $0x0, 0x20(%rax)
jmp 0x89ff
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq 0x14(%rax), %rcx
movq %rcx, -0x58(%rbp)
movl 0x1c(%rax), %eax
movl %eax, -0x50(%rbp)
movq -0x58(%rbp), %rdi
movl -0x50(%rbp), %esi
callq 0x41c0
movl %eax, %ecx
movl -0x60(%rbp), %eax
cmpl %ecx, %eax
jae 0x8a60
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4300
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x8a06
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_annotationelement
DexAnnotationElement* dx_annotationelement(ByteStream* bs, uint32_t offset) {
  DexAnnotationElement* res;
  int check;

  if (bs == NULL) return NULL;

  bsseek(bs,offset);

  DX_ALLOC(DexAnnotationElement,res);

  check = l128read(bs,&(res->name_idx));

  res->value = dx_encodedvalue(bs,bs->offset);

  res->meta.corrupted = (check || bs->exhausted);

  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x8aa3
movq $0x0, -0x8(%rbp)
jmp 0x8b2a
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movl $0x20, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
callq 0x4910
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4980
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movb $0x1, %al
cmpl $0x0, -0x24(%rbp)
movb %al, -0x25(%rbp)
jne 0x8b16
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_annotationsetreflist
DexAnnotationSetRefList* dx_annotationsetreflist(ByteStream* bs, uint32_t offset) {
  DexAnnotationSetRefList* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexAnnotationSetRefList,res);

  bsseek(bs,offset);

  check  = bsread(bs,(uint8_t*) &(res->size),sizeof(uint32_t));

  res->meta.corrupted = (check != sizeof(uint32_t) || bs->exhausted);
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexAnnotationSetRefItem*,res->list,res->size);

  for (i=0; i<res->size; i++)
    res->list[i] = dx_annotationsetrefitem(bs,bs->offset);

  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x8fe3
movq $0x0, -0x8(%rbp)
jmp 0x90e9
jmp 0x8fe5
movl $0x18, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4500
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rcx
movb $0x1, %al
cmpq $0x4, %rcx
movb %al, -0x29(%rbp)
jne 0x9046
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x9068
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x90e9
jmp 0x906a
movq -0x20(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x9093
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x909f
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
jmp 0x90a1
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x90e1
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4510
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x90a8
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_annotationsetitem
DexAnnotationSetItem* dx_annotationsetitem(ByteStream* bs, uint32_t offset) {
  DexAnnotationSetItem* res;
  int check;
  unsigned int i;

  if (bs == NULL) return NULL;

  DX_ALLOC(DexAnnotationSetItem,res);

  bsseek(bs,offset);

  check  = bsread(bs,(uint8_t*) &(res->size),sizeof(uint32_t));

  res->meta.corrupted = (check != sizeof(uint32_t) || bs->exhausted);
  if (res->meta.corrupted) return res;

  DX_ALLOC_LIST(DexAnnotationOffItem*,res->entries,res->size);

  for (i=0; i<res->size; i++)
    res->entries[i] = dx_annotationoffitem(bs,bs->offset);

  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x91a3
movq $0x0, -0x8(%rbp)
jmp 0x92a9
jmp 0x91a5
movl $0x18, %edi
callq 0x4750
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x44f0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
movl $0x4, %edx
callq 0x4500
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rcx
movb $0x1, %al
cmpq $0x4, %rcx
movb %al, -0x29(%rbp)
jne 0x9206
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
setne %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x9228
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x92a9
jmp 0x922a
movq -0x20(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x9253
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x4750
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x925f
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
jmp 0x9261
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x92a1
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x4870
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9268
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)