// File: /workspace/github_c_makefile_star2_O2/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 %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x73c1
movq %rdi, %r14
movl $0x168, %edi            # imm = 0x168
callq 0x46a0
movq %rax, %rbx
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4460
movq %rax, (%rbx)
movl 0x3c(%rax), %esi
movq %r14, %rdi
callq 0x4440
movq %rax, 0x8(%rbx)
movq (%rbx), %rcx
movl 0x40(%rcx), %edi
testq %rdi, %rdi
je 0x73d2
shlq $0x3, %rdi
callq 0x46a0
movq (%rbx), %rcx
jmp 0x73d4
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
xorl %eax, %eax
movq %rax, 0x10(%rbx)
movl 0x48(%rcx), %edi
testq %rdi, %rdi
je 0x73ee
shlq $0x3, %rdi
callq 0x46a0
movq (%rbx), %rcx
jmp 0x73f0
xorl %eax, %eax
movq %rax, 0x18(%rbx)
movl 0x50(%rcx), %edi
testq %rdi, %rdi
je 0x740a
shlq $0x3, %rdi
callq 0x46a0
movq (%rbx), %rcx
jmp 0x740c
xorl %eax, %eax
movq %rax, 0x20(%rbx)
movl 0x58(%rcx), %edi
testq %rdi, %rdi
je 0x7426
shlq $0x3, %rdi
callq 0x46a0
movq (%rbx), %rcx
jmp 0x7428
xorl %eax, %eax
movq %rax, 0x28(%rbx)
movl 0x60(%rcx), %edi
testq %rdi, %rdi
je 0x7442
shlq $0x3, %rdi
callq 0x46a0
movq (%rbx), %rcx
jmp 0x7444
xorl %eax, %eax
movq %rax, 0x30(%rbx)
movl 0x68(%rcx), %edi
testq %rdi, %rdi
je 0x7461
shlq $0x3, %rdi
callq 0x46a0
movq (%rbx), %rcx
movl 0x68(%rcx), %edx
jmp 0x7465
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 0x4480
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x40(%rax), %ecx
cmpq %rcx, %r15
jae 0x74d4
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4290
movq 0x10(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x74b0
movl 0x4c(%rax), %esi
movq %r14, %rdi
callq 0x4480
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x48(%rax), %ecx
cmpq %rcx, %r15
jae 0x7506
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4430
movq 0x18(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x74e2
movl 0x54(%rax), %esi
movq %r14, %rdi
callq 0x4480
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x50(%rax), %ecx
cmpq %rcx, %r15
jae 0x7538
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x46c0
movq 0x20(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x7514
movl 0x5c(%rax), %esi
movq %r14, %rdi
callq 0x4480
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x58(%rax), %ecx
cmpq %rcx, %r15
jae 0x756a
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x46b0
movq 0x28(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x7546
movl 0x64(%rax), %esi
movq %r14, %rdi
callq 0x4480
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x60(%rax), %ecx
cmpq %rcx, %r15
jae 0x759c
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x4090
movq 0x30(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x7578
movl 0x6c(%rax), %esi
movq %r14, %rdi
callq 0x4480
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x68(%rax), %ecx
cmpq %rcx, %r15
jae 0x75ce
movl 0x18(%r14), %esi
movq %r14, %rdi
callq 0x48d0
movq 0x38(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x75aa
movl 0x40(%rax), %edi
xorl %r15d, %r15d
movq %rdi, 0xc8(%rbx)
movq %rdi, 0xd0(%rbx)
testq %rdi, %rdi
je 0x75f2
shlq $0x3, %rdi
callq 0x46a0
jmp 0x75f4
xorl %eax, %eax
movq %rax, 0x40(%rbx)
movl %r15d, %r15d
cmpq %r15, 0xc8(%rbx)
jbe 0x7624
movq 0x10(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x8(%rax), %esi
movq %r14, %rdi
callq 0x41f0
movq 0x40(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incl %r15d
jmp 0x75f8
andq $0x0, 0xd8(%rbx)
movq (%rbx), %rax
movl 0x50(%rax), %edi
movq %rdi, 0xe0(%rbx)
testq %rdi, %rdi
je 0x7649
shlq $0x3, %rdi
callq 0x46a0
jmp 0x764b
xorl %eax, %eax
movq %rax, 0x48(%rbx)
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x50(%rax), %ecx
cmpq %rcx, %r15
jae 0x76c8
movq 0x20(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
testl %esi, %esi
je 0x76c3
movq 0xe0(%rbx), %rax
cmpq %rax, 0xd8(%rbx)
jb 0x76a2
movq 0x48(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x48(%rbx)
shlq 0xe0(%rbx)
movq 0x20(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
movq %r14, %rdi
callq 0x4450
movq 0x48(%rbx), %rcx
movq 0xd8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xd8(%rbx)
incq %r15
jmp 0x7652
xorl %r15d, %r15d
movl 0x68(%rax), %edi
cmpq %rdi, %r15
jae 0x7741
movq 0x38(%rbx), %rcx
movq (%rcx,%r15,8), %rcx
movl 0x14(%rcx), %esi
testl %esi, %esi
je 0x773c
movq 0xe0(%rbx), %rax
cmpq %rax, 0xd8(%rbx)
jb 0x7718
movq 0x48(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x48(%rbx)
shlq 0xe0(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x14(%rax), %esi
movq %r14, %rdi
callq 0x4450
movq 0x48(%rbx), %rcx
movq 0xd8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xd8(%rbx)
movq (%rbx), %rax
incq %r15
jmp 0x76cb
andq $0x0, 0xe8(%rbx)
movq %rdi, 0xf0(%rbx)
testq %rdi, %rdi
je 0x7760
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7762
xorl %eax, %eax
movq %rax, 0x50(%rbx)
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x68(%rax), %edi
cmpq %rdi, %r15
jae 0x77df
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x1c(%rax), %esi
testl %esi, %esi
je 0x77da
movq 0xf0(%rbx), %rax
cmpq %rax, 0xe8(%rbx)
jb 0x77b9
movq 0x50(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x50(%rbx)
shlq 0xf0(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x1c(%rax), %esi
movq %r14, %rdi
callq 0x4760
movq 0x50(%rbx), %rcx
movq 0xe8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xe8(%rbx)
incq %r15
jmp 0x7769
andq $0x0, 0xf8(%rbx)
movq %rdi, 0x100(%rbx)
testq %rdi, %rdi
je 0x77fe
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7800
xorl %eax, %eax
movq %rax, 0x58(%rbx)
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x68(%rax), %edi
cmpq %rdi, %r15
jae 0x787d
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x20(%rax), %esi
testl %esi, %esi
je 0x7878
movq 0x100(%rbx), %rax
cmpq %rax, 0xf8(%rbx)
jb 0x7857
movq 0x58(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x58(%rbx)
shlq 0x100(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x20(%rax), %esi
movq %r14, %rdi
callq 0x4590
movq 0x58(%rbx), %rcx
movq 0xf8(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0xf8(%rbx)
incq %r15
jmp 0x7807
andq $0x0, 0x108(%rbx)
movq %rdi, 0x110(%rbx)
testq %rdi, %rdi
je 0x789c
shlq $0x3, %rdi
callq 0x46a0
jmp 0x789e
xorl %eax, %eax
movq %rax, 0x60(%rbx)
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x68(%rax), %eax
cmpq %rax, %r15
jae 0x791b
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x24(%rax), %esi
testl %esi, %esi
je 0x7916
movq 0x110(%rbx), %rax
cmpq %rax, 0x108(%rbx)
jb 0x78f5
movq 0x60(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x60(%rbx)
shlq 0x110(%rbx)
movq 0x38(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x24(%rax), %esi
movq %r14, %rdi
callq 0x47f0
movq 0x60(%rbx), %rcx
movq 0x108(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x108(%rbx)
incq %r15
jmp 0x78a5
andq $0x0, 0x118(%rbx)
movq 0xf8(%rbx), %rdi
movq %rdi, 0x120(%rbx)
xorl %r15d, %r15d
testq %rdi, %rdi
je 0x7944
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7946
xorl %eax, %eax
movq %rax, 0x68(%rbx)
movl %r15d, %r15d
cmpq %r15, 0xf8(%rbx)
jbe 0x7ace
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
cmpb $0x0, (%rax)
je 0x796c
incl %r15d
jmp 0x794a
xorl %r12d, %r12d
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4180
movl %eax, %eax
cmpq %rax, %r12
jae 0x7a1d
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x48(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4180
testl %eax, %eax
je 0x7a0d
movq 0x120(%rbx), %rsi
cmpq %rsi, 0x118(%rbx)
jb 0x79ce
movq 0x68(%rbx), %rdi
shlq $0x4, %rsi
callq 0x4640
movq %rax, 0x68(%rbx)
shlq 0x120(%rbx)
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x48(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4180
movq %r14, %rdi
movl %eax, %esi
callq 0x47e0
movq 0x68(%rbx), %rcx
movq 0x118(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x118(%rbx)
incq %r12
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
jmp 0x796f
xorl %r12d, %r12d
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x2c(%rax), %rdi
movl 0x34(%rax), %esi
callq 0x4180
movl %eax, %eax
cmpq %rax, %r12
jae 0x7967
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x50(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4180
testl %eax, %eax
je 0x7ac6
movq 0x120(%rbx), %rsi
cmpq %rsi, 0x118(%rbx)
jb 0x7a87
movq 0x68(%rbx), %rdi
shlq $0x4, %rsi
callq 0x4640
movq %rax, 0x68(%rbx)
shlq 0x120(%rbx)
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x50(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rdi
movl 0x28(%rax), %esi
callq 0x4180
movq %r14, %rdi
movl %eax, %esi
callq 0x47e0
movq 0x68(%rbx), %rcx
movq 0x118(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x118(%rbx)
incq %r12
jmp 0x7a20
andq $0x0, 0x128(%rbx)
movq 0x118(%rbx), %rdi
movq %rdi, 0x130(%rbx)
xorl %r15d, %r15d
testq %rdi, %rdi
je 0x7af7
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7af9
xorl %eax, %eax
movq %rax, 0x70(%rbx)
movl %r15d, %r15d
cmpq %r15, 0x118(%rbx)
jbe 0x7b74
movq 0x68(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
testl %esi, %esi
je 0x7b6f
movq 0x130(%rbx), %rax
cmpq %rax, 0x128(%rbx)
jb 0x7b4e
movq 0x70(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x70(%rbx)
shlq 0x130(%rbx)
movq 0x68(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x10(%rax), %esi
movq %r14, %rdi
callq 0x4670
movq 0x70(%rbx), %rcx
movq 0x128(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x128(%rbx)
incl %r15d
jmp 0x7afd
andq $0x0, 0x138(%rbx)
movq 0xe8(%rbx), %rdi
movq %rdi, 0x140(%rbx)
xorl %r15d, %r15d
testq %rdi, %rdi
je 0x7b9d
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7b9f
xorl %eax, %eax
movq %rax, 0x78(%rbx)
movl %r15d, %r15d
movq 0xe8(%rbx), %rdi
cmpq %r15, %rdi
jbe 0x7c1d
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
movl 0x8(%rax), %esi
testl %esi, %esi
je 0x7c18
movq 0x140(%rbx), %rax
cmpq %rax, 0x138(%rbx)
jb 0x7bf7
movq 0x78(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
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)
incl %r15d
jmp 0x7ba3
andq $0x0, 0x148(%rbx)
movq %rdi, 0x150(%rbx)
xorl %r15d, %r15d
testq %rdi, %rdi
je 0x7c3f
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7c41
xorl %eax, %eax
movq %rax, 0x80(%rbx)
movl %r15d, %r15d
cmpq %r15, 0xe8(%rbx)
jbe 0x7e12
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
cmpb $0x0, (%rax)
je 0x7c6a
incl %r15d
jmp 0x7c48
xorl %r12d, %r12d
movl 0xc(%rax), %ecx
cmpq %rcx, %r12
jae 0x7cf3
movq 0x18(%rax), %rcx
movq (%rcx,%r12,8), %rcx
movl 0xc(%rcx), %esi
testl %esi, %esi
je 0x7ceb
movq 0x140(%rbx), %rax
cmpq %rax, 0x138(%rbx)
jb 0x7cc2
movq 0x78(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x78(%rbx)
shlq 0x140(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r12,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
movq (%rax,%r15,8), %rax
incq %r12
jmp 0x7c6d
xorl %r12d, %r12d
movl 0x10(%rax), %ecx
cmpq %rcx, %r12
jae 0x7d7c
movq 0x20(%rax), %rcx
movq (%rcx,%r12,8), %rcx
movl 0xc(%rcx), %esi
testl %esi, %esi
je 0x7d74
movq 0x140(%rbx), %rax
cmpq %rax, 0x138(%rbx)
jb 0x7d4b
movq 0x78(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x78(%rbx)
shlq 0x140(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r12,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
movq (%rax,%r15,8), %rax
incq %r12
jmp 0x7cf6
xorl %r12d, %r12d
movl 0x14(%rax), %ecx
cmpq %rcx, %r12
jae 0x7c65
movq 0x28(%rax), %rcx
movq (%rcx,%r12,8), %rcx
movl 0xc(%rcx), %esi
testl %esi, %esi
je 0x7e0a
movq 0x150(%rbx), %rax
cmpq %rax, 0x148(%rbx)
jb 0x7dde
movq 0x80(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
movq %rax, 0x80(%rbx)
shlq 0x150(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x28(%rax), %rax
movq (%rax,%r12,8), %rax
movl 0xc(%rax), %esi
movq %r14, %rdi
callq 0x41e0
movq 0x80(%rbx), %rcx
movq 0x148(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x148(%rbx)
movq 0x50(%rbx), %rax
movq (%rax,%r15,8), %rax
incq %r12
jmp 0x7d7f
xorl %r15d, %r15d
movl %r15d, %r15d
cmpq %r15, 0x148(%rbx)
jbe 0x7ec9
movq 0x80(%rbx), %rax
movq (%rax,%r15,8), %rax
cmpb $0x0, (%rax)
je 0x7e3a
incl %r15d
jmp 0x7e15
xorl %r12d, %r12d
movl 0x8(%rax), %ecx
cmpq %rcx, %r12
jae 0x7e35
movq 0x10(%rax), %rcx
movq (%rcx,%r12,8), %rcx
movl 0x8(%rcx), %esi
testl %esi, %esi
je 0x7ec1
movq 0x140(%rbx), %rax
cmpq %rax, 0x138(%rbx)
jb 0x7e95
movq 0x78(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
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
movq (%rax,%r15,8), %rax
incq %r12
jmp 0x7e3d
andq $0x0, 0x158(%rbx)
movq 0x138(%rbx), %rdi
movq %rdi, 0x160(%rbx)
xorl %r15d, %r15d
testq %rdi, %rdi
je 0x7ef2
shlq $0x3, %rdi
callq 0x46a0
jmp 0x7ef4
xorl %eax, %eax
movq %rax, 0x88(%rbx)
movl %r15d, %r15d
cmpq %r15, 0x138(%rbx)
jbe 0x73c3
movq 0x78(%rbx), %rax
movq (%rax,%r15,8), %rax
cmpb $0x0, (%rax)
je 0x7f1d
incl %r15d
jmp 0x7efb
xorl %r12d, %r12d
movl 0x8(%rax), %ecx
cmpq %rcx, %r12
jae 0x7f18
movq 0x10(%rax), %rcx
movq (%rcx,%r12,8), %rcx
movl 0x8(%rcx), %esi
testl %esi, %esi
je 0x7fa7
movq 0x160(%rbx), %rax
cmpq %rax, 0x158(%rbx)
jb 0x7f7b
movq 0x88(%rbx), %rdi
shlq $0x4, %rax
movq %rax, %rsi
callq 0x4640
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 0x4580
movq 0x88(%rbx), %rcx
movq 0x158(%rbx), %rdx
movq %rax, (%rcx,%rdx,8)
incq %rdx
movq %rdx, 0x158(%rbx)
movq 0x78(%rbx), %rax
movq (%rax,%r15,8), %rax
incq %r12
jmp 0x7f20
nop