// File: /workspace/github_c_makefile_star2_O3/rchiossi[P]dexterity/lib/dex_parser.c
// Function: dx_parse
Dex* dx_parse(ByteStream* bs) {
  Dex* dx;
  unsigned int i,j;

  if (bs == NULL) return NULL;

  dx = (Dex*) malloc_s(sizeof(Dex));

  dx->header = dx_header(bs,bs->offset);
  dx->map_list = dx_maplist(bs,dx->header->map_off);

  //header data
  DX_ALLOC_LIST(DexStringIdItem*,dx->string_ids,dx->header->string_ids_size);
  DX_ALLOC_LIST(DexTypeIdItem*,dx->type_ids,dx->header->type_ids_size);
  DX_ALLOC_LIST(DexProtoIdItem*,dx->proto_ids,dx->header->proto_ids_size);
  DX_ALLOC_LIST(DexFieldIdItem*,dx->field_ids,dx->header->field_ids_size);
  DX_ALLOC_LIST(DexMethodIdItem*,dx->method_ids,dx->header->method_ids_size);
  DX_ALLOC_LIST(DexClassDefItem*,dx->class_defs,dx->header->class_defs_size);

  dx->meta.string_ids_alloc = dx->header->string_ids_size;
  dx->meta.type_ids_alloc = dx->header->type_ids_size;
  dx->meta.proto_ids_alloc = dx->header->proto_ids_size;
  dx->meta.field_ids_alloc = dx->header->field_ids_size;
  dx->meta.method_ids_alloc = dx->header->method_ids_size;
  dx->meta.class_defs_alloc = dx->header->class_defs_size;
    
  bsseek(bs,dx->header->string_ids_off);
  for (i=0; i<dx->header->string_ids_size; i++)
    dx->string_ids[i] = dx_stringid(bs,bs->offset);

  bsseek(bs,dx->header->type_ids_off);
  for (i=0; i<dx->header->type_ids_size; i++)
    dx->type_ids[i] = dx_typeid(bs,bs->offset);

  bsseek(bs,dx->header->proto_ids_off);
  for (i=0; i<dx->header->proto_ids_size; i++)
    dx->proto_ids[i] = dx_protoid(bs,bs->offset);

  bsseek(bs,dx->header->field_ids_off);
  for (i=0; i<dx->header->field_ids_size; i++)
    dx->field_ids[i] = dx_fieldid(bs,bs->offset);

  bsseek(bs,dx->header->method_ids_off);
  for (i=0; i<dx->header->method_ids_size; i++)
    dx->method_ids[i] = dx_methodid(bs,bs->offset);

  bsseek(bs,dx->header->class_defs_off);
  for (i=0; i<dx->header->class_defs_size; i++)
    dx->class_defs[i] = dx_classdef(bs,bs->offset);

  //Data from string id
  dx->meta.string_data_list_size = dx->header->string_ids_size;
  dx->meta.string_data_list_alloc = dx->header->string_ids_size;

  DX_ALLOC_LIST(DexStringDataItem*,dx->string_data_list,dx->header->string_ids_size);

  for (i=0; i<dx->meta.string_data_list_size; i++)
    dx->string_data_list[i] = dx_stringdata(bs,dx->string_ids[i]->string_data_off);
  
  //Data from proto id
  dx->meta.type_lists_size = 0;
  dx->meta.type_lists_alloc = dx->header->proto_ids_size;

  DX_ALLOC_LIST(DexTypeList*,dx->type_lists,dx->meta.type_lists_alloc);

  DX_READ_TABLE(DexTypeList*,
		dx_typelist,
		dx->header->proto_ids_size,
		dx->proto_ids[i]->parameters_off,
		dx->type_lists,
		dx->meta.type_lists_size,
		dx->meta.type_lists_alloc);

  //Data from class def
  DX_READ_TABLE(DexTypeList*,
		dx_typelist,
		dx->header->class_defs_size,
		dx->class_defs[i]->interfaces_off,
		dx->type_lists,
		dx->meta.type_lists_size,
		dx->meta.type_lists_alloc);

  dx->meta.an_directories_size = 0;
  dx->meta.an_directories_alloc = dx->header->class_defs_size;

  DX_ALLOC_LIST(DexAnnotationDirectoryItem*,
		dx->an_directories,dx->meta.an_directories_alloc);

  DX_READ_TABLE(DexAnnotationDirectoryItem*,
		dx_annotationdirectoryitem,
		dx->header->class_defs_size,
		dx->class_defs[i]->annotations_off,
		dx->an_directories,
		dx->meta.an_directories_size,
		dx->meta.an_directories_alloc);

  dx->meta.class_data_size = 0;
  dx->meta.class_data_alloc = dx->header->class_defs_size;

  DX_ALLOC_LIST(DexClassDataItem*,
		dx->class_data,dx->meta.class_data_alloc);

  DX_READ_TABLE(DexClassDataItem*,
		dx_classdata,
		dx->header->class_defs_size,
		dx->class_defs[i]->class_data_off,
		dx->class_data,
		dx->meta.class_data_size,
		dx->meta.class_data_alloc);

  dx->meta.encoded_arrays_size = 0;
  dx->meta.encoded_arrays_alloc = dx->header->class_defs_size;

  DX_ALLOC_LIST(DexEncodedArray*,
		dx->encoded_arrays,dx->meta.encoded_arrays_alloc);

  DX_READ_TABLE(DexEncodedArray*,
		dx_encodedarray,
		dx->header->class_defs_size,
		dx->class_defs[i]->static_values_off,
		dx->encoded_arrays,
		dx->meta.encoded_arrays_size,
		dx->meta.encoded_arrays_alloc);

  //Data from class data
  dx->meta.code_list_size = 0;
  dx->meta.code_list_alloc = dx->meta.class_data_size;

  DX_ALLOC_LIST(DexCodeItem*,
		dx->code_list,dx->meta.code_list_alloc);

  for (j=0; j< dx->meta.class_data_size; j++) {
    if (dx->class_data[j]->meta.corrupted) continue;

    DX_READ_TABLE(DexCodeItem*,
		  dx_codeitem,
		  ul128toui(dx->class_data[j]->direct_methods_size),
		  ul128toui(dx->class_data[j]->direct_methods[i]->code_off),
		  dx->code_list,
		  dx->meta.code_list_size,
		  dx->meta.code_list_alloc);   

    DX_READ_TABLE(DexCodeItem*,
		  dx_codeitem,
		  ul128toui(dx->class_data[j]->virtual_methods_size),
		  ul128toui(dx->class_data[j]->virtual_methods[i]->code_off),
		  dx->code_list,
		  dx->meta.code_list_size,
		  dx->meta.code_list_alloc);   
  }

  //data from code item
  dx->meta.debug_info_list_size = 0;
  dx->meta.debug_info_list_alloc = dx->meta.code_list_size;

  DX_ALLOC_LIST(DexDebugInfo*,
		dx->debug_info_list,dx->meta.debug_info_list_alloc);

  DX_READ_TABLE(DexDebugInfo*,
		dx_debuginfo,
		dx->meta.code_list_size,
		dx->code_list[i]->debug_info_off,
		dx->debug_info_list,
		dx->meta.debug_info_list_size,
		dx->meta.debug_info_list_alloc);
 
  //data from annotations directory
  dx->meta.an_set_size = 0;
  dx->meta.an_set_alloc = dx->meta.an_directories_size;

  DX_ALLOC_LIST(DexAnnotationSetItem*,
		dx->an_set,dx->meta.an_set_alloc);

  DX_READ_TABLE(DexAnnotationSetItem*,
		dx_annotationsetitem,
		dx->meta.an_directories_size,
		dx->an_directories[i]->class_annotations_off,
		dx->an_set,
		dx->meta.an_set_size,
		dx->meta.an_set_alloc);

  dx->meta.an_set_ref_lists_size = 0;
  dx->meta.an_set_ref_lists_alloc = dx->meta.an_directories_size;

  DX_ALLOC_LIST(DexAnnotationSetRefList*,
		dx->an_set_ref_lists,dx->meta.an_set_ref_lists_alloc);

  for (j=0; j<dx->meta.an_directories_size; j++) {
    if (dx->an_directories[j]->meta.corrupted) continue;

    DX_READ_TABLE(DexAnnotationSetItem*,
		  dx_annotationsetitem,
		  dx->an_directories[j]->fields_size,
		  dx->an_directories[j]->field_annotations[i]->annotations_off,
		  dx->an_set,
		  dx->meta.an_set_size,
		  dx->meta.an_set_alloc);

    DX_READ_TABLE(DexAnnotationSetItem*,
		  dx_annotationsetitem,
		  dx->an_directories[j]->annotated_methods_size,
		  dx->an_directories[j]->method_annotations[i]->annotations_off,
		  dx->an_set,
		  dx->meta.an_set_size,
		  dx->meta.an_set_alloc);

    DX_READ_TABLE(DexAnnotationSetRefList*,
		  dx_annotationsetreflist,
		  dx->an_directories[j]->annotated_parameters_size,
		  dx->an_directories[j]->parameter_annotations[i]->annotations_off,
		  dx->an_set_ref_lists,
		  dx->meta.an_set_ref_lists_size,
		  dx->meta.an_set_ref_lists_alloc);
  }

  //data from annotation set ref lists
  for (j=0; j<dx->meta.an_set_ref_lists_size; j++) {
    if (dx->an_set_ref_lists[j]->meta.corrupted) continue;
    
    DX_READ_TABLE(DexAnnotationSetItem*,
		  dx_annotationsetitem,
		  dx->an_set_ref_lists[j]->size,
		  dx->an_set_ref_lists[j]->list[i]->annotations_off,
		  dx->an_set,
		  dx->meta.an_set_size,
		  dx->meta.an_set_alloc);
  }

  //data from annotation set items
  dx->meta.annotations_size = 0;
  dx->meta.annotations_alloc = dx->meta.an_set_size;

  DX_ALLOC_LIST(DexAnnotationItem*,
		dx->annotations,dx->meta.annotations_alloc);


  for (j=0; j<dx->meta.an_set_size; j++) {
    if (dx->an_set[j]->meta.corrupted) continue;
    
    DX_READ_TABLE(DexAnnotationItem*,
		  dx_annotationitem,
		  dx->an_set[j]->size,
		  dx->an_set[j]->entries[i]->annotation_off,
		  dx->annotations,
		  dx->meta.annotations_size,
		  dx->meta.annotations_alloc);
  }

  return dx;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
testq %rdi, %rdi
je 0x765c
movq %rdi, %r14
movl $0x168, %edi            # imm = 0x168
callq 0x4600
movq %rax, %rbx
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x43f0
movq %rax, (%rbx)
movl 0x3c(%rax), %esi
movq %r14, %rdi
callq 0x43d0
movq %rax, 0x8(%rbx)
movq (%rbx), %rcx
movl 0x40(%rcx), %edi
testq %rdi, %rdi
je 0x7663
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x7665
xorl %ebx, %ebx
jmp 0x8452
xorl %eax, %eax
movq %rax, 0x10(%rbx)
movl 0x48(%rcx), %edi
testq %rdi, %rdi
je 0x767f
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x7681
xorl %eax, %eax
movq %rax, 0x18(%rbx)
movl 0x50(%rcx), %edi
testq %rdi, %rdi
je 0x769b
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x769d
xorl %eax, %eax
movq %rax, 0x20(%rbx)
movl 0x58(%rcx), %edi
testq %rdi, %rdi
je 0x76b7
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x76b9
xorl %eax, %eax
movq %rax, 0x28(%rbx)
movl 0x60(%rcx), %edi
testq %rdi, %rdi
je 0x76d3
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x76d5
xorl %eax, %eax
movq %rax, 0x30(%rbx)
movl 0x68(%rcx), %edi
testq %rdi, %rdi
je 0x76f2
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
movl 0x68(%rcx), %edx
jmp 0x76f6
xorl %edx, %edx
xorl %eax, %eax
movq %rax, 0x38(%rbx)
movl 0x40(%rcx), %eax
movq %rax, 0x98(%rbx)
movl 0x48(%rcx), %eax
movq %rax, 0xa0(%rbx)
movl 0x50(%rcx), %eax
movq %rax, 0xa8(%rbx)
movl 0x58(%rcx), %eax
movq %rax, 0xb0(%rbx)
movl 0x60(%rcx), %eax
movq %rax, 0xb8(%rbx)
movq %rdx, 0xc0(%rbx)
movl 0x44(%rcx), %esi
movq %r14, %rdi
callq 0x4410
movq (%rbx), %rax
cmpl $0x0, 0x40(%rax)
je 0x776c
xorl %r15d, %r15d
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4240
movq 0x10(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%rbx), %rax
movl 0x40(%rax), %ecx
cmpq %rcx, %r15
jb 0x774a
movl 0x4c(%rax), %esi
movq %r14, %rdi
callq 0x4410
movq (%rbx), %rax
cmpl $0x0, 0x48(%rax)
je 0x77a5
xorl %r15d, %r15d
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x43c0
movq 0x18(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%rbx), %rax
movl 0x48(%rax), %ecx
cmpq %rcx, %r15
jb 0x7783
movl 0x54(%rax), %esi
movq %r14, %rdi
callq 0x4410
movq (%rbx), %rax
cmpl $0x0, 0x50(%rax)
je 0x77de
xorl %r15d, %r15d
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4620
movq 0x20(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%rbx), %rax
movl 0x50(%rax), %ecx
cmpq %rcx, %r15
jb 0x77bc
movl 0x5c(%rax), %esi
movq %r14, %rdi
callq 0x4410
movq (%rbx), %rax
cmpl $0x0, 0x58(%rax)
je 0x7817
xorl %r15d, %r15d
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4610
movq 0x28(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%rbx), %rax
movl 0x58(%rax), %ecx
cmpq %rcx, %r15
jb 0x77f5
movl 0x64(%rax), %esi
movq %r14, %rdi
callq 0x4410
movq (%rbx), %rax
cmpl $0x0, 0x60(%rax)
je 0x7850
xorl %r15d, %r15d
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4090
movq 0x30(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%rbx), %rax
movl 0x60(%rax), %ecx
cmpq %rcx, %r15
jb 0x782e
movl 0x6c(%rax), %esi
movq %r14, %rdi
callq 0x4410
movq (%rbx), %rax
cmpl $0x0, 0x68(%rax)
je 0x7889
xorl %r15d, %r15d
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4800
movq 0x38(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%rbx), %rax
movl 0x68(%rax), %ecx
cmpq %rcx, %r15
jb 0x7867
movl 0x40(%rax), %edi
movq %rdi, 0xc8(%rbx)
movq %rdi, 0xd0(%rbx)
testq %rdi, %rdi
je 0x78e9
shlq $0x3, %rdi
callq 0x4600
cmpq $0x0, 0xc8(%rbx)
movq %rax, 0x40(%rbx)
je 0x78f1
movl $0x1, %ebp
xorl %r15d, %r15d
movq 0x10(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x8(%rax), %esi
movq %r14, %rdi
callq 0x41b0
movq 0x40(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
movl %ebp, %r15d
incl %ebp
cmpq %r15, 0xc8(%rbx)
ja 0x78be
jmp 0x78f1
movq $0x0, 0x40(%rbx)
movq $0x0, 0xd8(%rbx)
movq (%rbx), %rcx
movl 0x50(%rcx), %edi
movq %rdi, 0xe0(%rbx)
testq %rdi, %rdi
je 0x79a5
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
cmpl $0x0, 0x50(%rcx)
movq %rax, 0x48(%rbx)
je 0x79ad
xorl %r15d, %r15d
movq 0x20(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
testl %esi, %esi
je 0x7998
movq 0xe0(%rbx), %rax
cmpq %rax, 0xd8(%rbx)
jb 0x7974
movq 0x48(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x48(%rbx)
shlq 0xe0(%rbx)
movq 0x20(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
movq %r14, %rdi
callq 0x43e0
movq 0x48(%rbx), %rcx
movq 0xd8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xd8(%rbx)
movq (%rbx), %rcx
incq %r15
movl 0x50(%rcx), %eax
cmpq %rax, %r15
jb 0x792f
jmp 0x79ad
movq $0x0, 0x48(%rbx)
cmpl $0x0, 0x68(%rcx)
je 0x7a61
xorl %r15d, %r15d
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x14(%rax), %esi
testl %esi, %esi
je 0x7a23
movq 0xe0(%rbx), %rax
cmpq %rax, 0xd8(%rbx)
jb 0x79ff
movq 0x48(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x48(%rbx)
shlq 0xe0(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x14(%rax), %esi
movq %r14, %rdi
callq 0x43e0
movq 0x48(%rbx), %rcx
movq 0xd8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xd8(%rbx)
movq (%rbx), %rcx
incq %r15
movl 0x68(%rcx), %edi
cmpq %rdi, %r15
jb 0x79ba
leaq 0xe8(%rbx), %rbp
movq $0x0, 0xe8(%rbx)
leaq 0xf0(%rbx), %r12
movq %rdi, 0xf0(%rbx)
testq %rdi, %rdi
je 0x7a79
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x7a7b
leaq 0xe8(%rbx), %rbp
leaq 0xf0(%rbx), %r12
xorps %xmm0, %xmm0
movups %xmm0, 0xe8(%rbx)
xorl %eax, %eax
movq %rax, 0x50(%rbx)
cmpl $0x0, 0x68(%rcx)
je 0x7b2d
xorl %r15d, %r15d
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x1c(%rax), %esi
testl %esi, %esi
je 0x7aef
movq (%r12), %rax
cmpq %rax, (%rbp)
jb 0x7acb
movq 0x50(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x50(%rbx)
shlq 0xf0(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x1c(%rax), %esi
movq %r14, %rdi
callq 0x46a0
movq 0x50(%rbx), %rcx
movq 0xe8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xe8(%rbx)
movq (%rbx), %rcx
incq %r15
movl 0x68(%rcx), %edi
cmpq %rdi, %r15
jb 0x7a8c
leaq 0xf8(%rbx), %r12
movq $0x0, 0xf8(%rbx)
leaq 0x100(%rbx), %r13
movq %rdi, 0x100(%rbx)
testq %rdi, %rdi
je 0x7b45
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x7b47
leaq 0xf8(%rbx), %r12
leaq 0x100(%rbx), %r13
xorps %xmm0, %xmm0
movups %xmm0, 0xf8(%rbx)
xorl %eax, %eax
movq %rax, 0x58(%rbx)
cmpl $0x0, 0x68(%rcx)
movq %rbp, 0x8(%rsp)
je 0x7bfe
xorl %r15d, %r15d
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x20(%rax), %esi
testl %esi, %esi
je 0x7bc0
movq (%r13), %rax
cmpq %rax, (%r12)
jb 0x7b9c
movq 0x58(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x58(%rbx)
shlq 0x100(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x20(%rax), %esi
movq %r14, %rdi
callq 0x4510
movq 0x58(%rbx), %rcx
movq 0xf8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xf8(%rbx)
movq (%rbx), %rcx
incq %r15
movl 0x68(%rcx), %edi
cmpq %rdi, %r15
jb 0x7b5d
leaq 0x108(%rbx), %r13
movq $0x0, 0x108(%rbx)
leaq 0x110(%rbx), %rbp
movq %rdi, 0x110(%rbx)
testq %rdi, %rdi
je 0x7c16
shlq $0x3, %rdi
callq 0x4600
movq (%rbx), %rcx
jmp 0x7c18
leaq 0x108(%rbx), %r13
leaq 0x110(%rbx), %rbp
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rbx)
xorl %eax, %eax
movq %rax, 0x60(%rbx)
cmpl $0x0, 0x68(%rcx)
je 0x7c93
xorl %r15d, %r15d
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x24(%rax), %esi
testl %esi, %esi
je 0x7c88
movq (%rbp), %rax
cmpq %rax, (%r13)
jb 0x7c64
movq 0x60(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x60(%rbx)
shlq 0x110(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x24(%rax), %esi
movq %r14, %rdi
callq 0x4730
movq 0x60(%rbx), %rcx
movq 0x108(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x108(%rbx)
movq (%rbx), %rcx
incq %r15
movl 0x68(%rcx), %eax
cmpq %rax, %r15
jb 0x7c25
movq $0x0, 0x118(%rbx)
movq 0xf8(%rbx), %rdi
movq %rdi, 0x120(%rbx)
testq %rdi, %rdi
je 0x7e7d
shlq $0x3, %rdi
callq 0x4600
leaq 0x68(%rbx), %r13
cmpq $0x0, 0xf8(%rbx)
movq %rax, 0x68(%rbx)
je 0x7e89
xorl %ebp, %ebp
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
cmpb $0x0, (%rax)
jne 0x7e6f
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4170
testl %eax, %eax
je 0x7da7
xorl %r15d, %r15d
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x48(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4170
testl %eax, %eax
je 0x7d85
movq 0x120(%rbx), %rsi
cmpq %rsi, 0x118(%rbx)
jb 0x7d46
movq 0x68(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x68(%rbx)
shlq 0x120(%rbx)
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x48(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4170
movq %r14, %rdi
movl %eax, %esi
callq 0x4720
movq 0x68(%rbx), %rcx
movq 0x118(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x118(%rbx)
incq %r15
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4170
movl %eax, %eax
cmpq %rax, %r15
jb 0x7cfe
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x2c(%rax), %rdi
movl 0x34(%rax), %esi
callq 0x4170
testl %eax, %eax
je 0x7e6f
xorl %r15d, %r15d
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x50(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4170
testl %eax, %eax
je 0x7e4d
movq 0x120(%rbx), %rsi
cmpq %rsi, 0x118(%rbx)
jb 0x7e0e
movq 0x68(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x68(%rbx)
shlq 0x120(%rbx)
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x50(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4170
movq %r14, %rdi
movl %eax, %esi
callq 0x4720
movq 0x68(%rbx), %rcx
movq 0x118(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x118(%rbx)
incq %r15
movq 0x58(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x2c(%rax), %rdi
movl 0x34(%rax), %esi
callq 0x4170
movl %eax, %eax
cmpq %rax, %r15
jb 0x7dc6
incl %ebp
cmpq %rbp, (%r12)
ja 0x7cd6
jmp 0x7e89
leaq 0x68(%rbx), %r13
movq $0x0, 0x68(%rbx)
movq $0x0, 0x128(%rbx)
movq 0x118(%rbx), %rdi
movq %rdi, 0x130(%rbx)
testq %rdi, %rdi
je 0x7f49
shlq $0x3, %rdi
callq 0x4600
movq 0x118(%rbx), %rcx
movq %rax, 0x70(%rbx)
testq %rcx, %rcx
je 0x7f51
movl $0x1, %ebp
xorl %r15d, %r15d
movq (%r13), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
testl %esi, %esi
je 0x7f3d
movq 0x130(%rbx), %rax
cmpq %rax, 0x128(%rbx)
jb 0x7f15
movq 0x70(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x70(%rbx)
shlq 0x130(%rbx)
movq 0x68(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
movq %r14, %rdi
callq 0x45e0
movq 0x70(%rbx), %rcx
movq 0x128(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x128(%rbx)
movq 0x118(%rbx), %rcx
movl %ebp, %r15d
incl %ebp
cmpq %r15, %rcx
ja 0x7ed0
jmp 0x7f51
movq $0x0, 0x70(%rbx)
movq $0x0, 0x138(%rbx)
movq 0xe8(%rbx), %rdi
movq %rdi, 0x140(%rbx)
testq %rdi, %rdi
je 0x824a
shlq $0x3, %rdi
callq 0x4600
movq 0xe8(%rbx), %rdi
leaq 0x78(%rbx), %rbp
movq %rax, 0x78(%rbx)
testq %rdi, %rdi
je 0x8256
movq %rbp, (%rsp)
movl $0x1, %ebp
xorl %r15d, %r15d
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x8(%rax), %esi
testl %esi, %esi
je 0x800d
movq 0x140(%rbx), %rax
cmpq %rax, 0x138(%rbx)
jb 0x7fe5
movq 0x78(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x45b0
movq %rax, 0x78(%rbx)
shlq 0x140(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x8(%rax), %esi
movq %r14, %rdi
callq 0x40b0
movq 0x78(%rbx), %rcx
movq 0x138(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x138(%rbx)
movq 0xe8(%rbx), %rdi
movl %ebp, %r15d
incl %ebp
cmpq %r15, %rdi
ja 0x7fa0
leaq 0x148(%rbx), %r13
movq $0x0, 0x148(%rbx)
movq %rdi, 0x150(%rbx)
testq %rdi, %rdi
je 0x8464
shlq $0x3, %rdi
callq 0x4600
movq %rbx, %rdx
subq $-0x80, %rdx
cmpq $0x0, 0xe8(%rbx)
movq %rax, 0x80(%rbx)
je 0x846d
movq %rdx, 0x10(%rsp)
movq 0x50(%rbx), %rax
xorl %r12d, %r12d
movq 0x8(%rsp), %rbp
movq (%rax,%r12,8), %rcx
cmpb $0x0, (%rcx)
jne 0x8232
cmpl $0x0, 0xc(%rcx)
je 0x8101
xorl %ebp, %ebp
movq 0x18(%rcx), %rcx
movq (%rcx,%rbp,8), %rcx
cmpl $0x0, 0xc(%rcx)
je 0x80f2
movq 0x140(%rbx), %rsi
cmpq %rsi, 0x138(%rbx)
jb 0x80be
movq 0x78(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x78(%rbx)
shlq 0x140(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r12,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%rbp,8), %rax
movl 0xc(%rax), %esi
movq %r14, %rdi
callq 0x40b0
movq 0x78(%rbx), %rcx
movq 0x138(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x138(%rbx)
movq 0x50(%rbx), %rax
incq %rbp
movq (%rax,%r12,8), %rcx
movl 0xc(%rcx), %edx
cmpq %rdx, %rbp
jb 0x8084
cmpl $0x0, 0x10(%rcx)
je 0x8192
xorl %r15d, %r15d
movq 0x8(%rsp), %rbp
movq 0x20(%rcx), %rcx
movq (%rcx,%r15,8), %rcx
cmpl $0x0, 0xc(%rcx)
je 0x8181
movq 0x140(%rbx), %rsi
cmpq %rsi, 0x138(%rbx)
jb 0x814d
movq 0x78(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x78(%rbx)
shlq 0x140(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r15,8), %rax
movl 0xc(%rax), %esi
movq %r14, %rdi
callq 0x40b0
movq 0x78(%rbx), %rcx
movq 0x138(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x138(%rbx)
movq 0x50(%rbx), %rax
incq %r15
movq (%rax,%r12,8), %rcx
movl 0x10(%rcx), %edx
cmpq %rdx, %r15
jb 0x8113
jmp 0x8197
movq 0x8(%rsp), %rbp
movq (%rax,%r12,8), %rcx
cmpl $0x0, 0x14(%rcx)
je 0x8232
xorl %r15d, %r15d
movq 0x28(%rcx), %rcx
movq (%rcx,%r15,8), %rcx
cmpl $0x0, 0xc(%rcx)
je 0x821f
movq 0x150(%rbx), %rsi
cmpq %rsi, 0x148(%rbx)
jb 0x81e8
movq 0x80(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x80(%rbx)
shlq 0x150(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r12,8), %rax
movq 0x28(%rax), %rax
movq (%rax,%r15,8), %rax
movl 0xc(%rax), %esi
movq %r14, %rdi
callq 0x41a0
movq 0x80(%rbx), %rcx
movq 0x148(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x148(%rbx)
movq 0x50(%rbx), %rax
incq %r15
movq (%rax,%r12,8), %rcx
movl 0x14(%rcx), %edx
cmpq %rdx, %r15
jb 0x81a8
incl %r12d
cmpq %r12, (%rbp)
ja 0x806f
movq (%rsp), %rbp
movq 0x10(%rsp), %rdx
jmp 0x8279
leaq 0x78(%rbx), %rbp
movq $0x0, 0x78(%rbx)
leaq 0x148(%rbx), %r13
xorps %xmm0, %xmm0
movups %xmm0, 0x148(%rbx)
movq %rbx, %rdx
subq $-0x80, %rdx
movq $0x0, 0x80(%rbx)
movq (%r13), %rcx
testq %rcx, %rcx
je 0x8341
movq (%rdx), %rax
xorl %r15d, %r15d
movq (%rax,%r15,8), %rdx
cmpb $0x0, (%rdx)
jne 0x8335
movq (%rax,%r15,8), %rdx
cmpl $0x0, 0x8(%rdx)
je 0x8335
xorl %r12d, %r12d
movq 0x10(%rdx), %rcx
movq (%rcx,%r12,8), %rcx
cmpl $0x0, 0x8(%rcx)
je 0x831e
movq 0x140(%rbx), %rsi
cmpq %rsi, 0x138(%rbx)
jb 0x82e7
movq 0x78(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x78(%rbx)
shlq 0x140(%rbx)
movq 0x80(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movl 0x8(%rax), %esi
movq %r14, %rdi
callq 0x40b0
movq 0x78(%rbx), %rcx
movq 0x138(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x138(%rbx)
movq 0x80(%rbx), %rax
incq %r12
movq (%rax,%r15,8), %rdx
movl 0x8(%rdx), %ecx
cmpq %rcx, %r12
jb 0x82aa
movq (%r13), %rcx
incl %r15d
cmpq %r15, %rcx
ja 0x828c
movq $0x0, 0x158(%rbx)
movq 0x138(%rbx), %rdi
movq %rdi, 0x160(%rbx)
testq %rdi, %rdi
je 0x8447
shlq $0x3, %rdi
callq 0x4600
movq 0x138(%rbx), %rcx
movq %rax, 0x88(%rbx)
testq %rcx, %rcx
je 0x8452
movq (%rbp), %rax
xorl %r15d, %r15d
movq (%rax,%r15,8), %rdx
cmpb $0x0, (%rdx)
jne 0x8439
movq (%rax,%r15,8), %rdx
cmpl $0x0, 0x8(%rdx)
je 0x8439
xorl %r12d, %r12d
movq 0x10(%rdx), %rcx
movq (%rcx,%r12,8), %rcx
cmpl $0x0, 0x8(%rcx)
je 0x841f
movq 0x160(%rbx), %rsi
cmpq %rsi, 0x158(%rbx)
jb 0x83e8
movq 0x88(%rbx), %rdi
shlq $0x4, %rsi
callq 0x45b0
movq %rax, 0x88(%rbx)
shlq 0x160(%rbx)
movq 0x78(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movl 0x8(%rax), %esi
movq %r14, %rdi
callq 0x4500
movq 0x88(%rbx), %rcx
movq 0x158(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x158(%rbx)
movq 0x78(%rbx), %rax
incq %r12
movq (%rax,%r15,8), %rdx
movl 0x8(%rdx), %ecx
cmpq %rcx, %r12
jb 0x83a8
movq 0x138(%rbx), %rcx
incl %r15d
cmpq %r15, %rcx
ja 0x838a
jmp 0x8452
movq $0x0, 0x88(%rbx)
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rsp), %rbp
jmp 0x8267
movq (%rsp), %rbp
jmp 0x8279
nop