// File: /workspace/github_cpp_makefile_star2_O1/dsharlet[P]array/test/image.cpp
// Function: void nda::test_crop<nda::shape<nda::dim<-9l, -9l, 1l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>>()
void test_crop() {
  array<int, Shape> base({100, 80, 3});
  fill_pattern(base);

  auto crop_xy = crop(base, 2, 1, 96, 77, crop_origin::crop);
  ASSERT_EQ(crop_xy.x().min(), 2);
  ASSERT_EQ(crop_xy.y().min(), 1);
  ASSERT_EQ(crop_xy.x().max(), 95);
  ASSERT_EQ(crop_xy.y().max(), 76);
  check_pattern(crop_xy);

  auto crop_zero_xy = crop(base, 3, 2, 95, 76, crop_origin::zero);
  ASSERT_EQ(crop_zero_xy.x().min(), 0);
  ASSERT_EQ(crop_zero_xy.y().min(), 0);
  ASSERT_EQ(crop_zero_xy.x().max(), 91);
  ASSERT_EQ(crop_zero_xy.y().max(), 73);
  check_pattern(crop_zero_xy, std::make_tuple(3, 2, 0));

  auto crop2_xy = crop(crop_xy, 4, 3, 92, 73, crop_origin::crop);
  ASSERT_EQ(crop2_xy.x().min(), 4);
  ASSERT_EQ(crop2_xy.y().min(), 3);
  ASSERT_EQ(crop2_xy.x().max(), 91);
  ASSERT_EQ(crop2_xy.y().max(), 72);
  check_pattern(crop2_xy);

  auto out_of_bounds_crop_xy = crop(base, 50, 40, 105, 70, crop_origin::crop);
  ASSERT_EQ(out_of_bounds_crop_xy.x().min(), 50);
  ASSERT_EQ(out_of_bounds_crop_xy.y().min(), 40);
  ASSERT_EQ(out_of_bounds_crop_xy.x().max(), 99);
  ASSERT_EQ(out_of_bounds_crop_xy.y().max(), 69);
  check_pattern(crop2_xy);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x370, %rsp            # imm = 0x370
xorl %r15d, %r15d
leaq 0x120(%rsp), %r14
movq %r15, (%r14)
movl $0x64, %r12d
movq %r12, 0x8(%r14)
movabsq $-0x8000000000000000, %r13 # imm = 0x8000000000000000
movq %r13, 0x10(%r14)
xorl %edi, %edi
movq %r14, %rsi
callq 0xd09f
leaq 0x328(%rsp), %rbx
xorps %xmm0, %xmm0
movups %xmm0, -0x18(%rbx)
movups %xmm0, -0x8(%rbx)
movq $0x3, 0x8(%rbx)
movq %r13, 0x10(%rbx)
movq %r15, 0x18(%rbx)
movq $0x50, 0x20(%rbx)
movq %r13, 0x28(%rbx)
movq %r15, 0x30(%rbx)
movq %r12, 0x38(%rbx)
leaq 0x308(%rsp), %r15
movq %r15, %rdi
callq 0xc2a2
movq %r15, %rdi
callq 0xc38a
movq 0x18(%r15), %rax
movq %rax, (%r14)
leaq 0x128(%rsp), %rax
movl $0x9, %ecx
movq %rax, %rdi
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x30(%rsp), %rcx
movl $0x0, (%rcx)
leaq 0x2b8(%rsp), %rsi
movq %rcx, (%rsi)
movq %r14, 0x8(%rsi)
movq %rax, %rdi
callq 0x5fc7c
movq 0x320(%rsp), %rax
leaq 0x128(%rsp), %rdi
movq %rax, -0x8(%rdi)
movl $0x9, %ecx
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl $0x1, (%rsp)
leaq 0x2b8(%rsp), %r14
leaq 0x120(%rsp), %rsi
movl $0x2, %edx
movl $0x1, %ecx
movl $0x60, %r8d
movl $0x4d, %r9d
movq %r14, %rdi
callq 0x5faf9
movq 0x2f0(%rsp), %r15
leaq 0x40(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x55e74(%rip), %rsi     # 0xb1c15
leaq 0x55e83(%rip), %rdx     # 0xb1c2b
leaq 0x30(%rsp), %rdi
callq 0xd0b8
xorl %esi, %esi
cmpq $0x2, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xbf0a
leaq 0x4587f(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x5603a(%rip), %rsi     # 0xb1e23
movq %rax, %rdi
callq 0x19c5c
leaq 0x49532(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5be20
movq 0x2f0(%rsp), %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x4582d(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x4e1aa(%rip), %rsi     # 0xa9fe0
movq %rax, %rdi
callq 0x18a16
leaq 0x494e5(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5be6a
movq %r15, %rdi
addq $0x10, %rdi
movl $0x2, %esi
callq 0x22f0
leaq 0x5c4f8(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5be9d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x2d8(%rsp), %r15
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x55d78(%rip), %rsi     # 0xb1c2c
leaq 0x55d87(%rip), %rdx     # 0xb1c42
callq 0xd0b8
xorl %esi, %esi
cmpq $0x1, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xbf0a
leaq 0x45771(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55f72(%rip), %rsi     # 0xb1e69
movq %rax, %rdi
callq 0x19c5c
leaq 0x49424(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5bf2e
movq 0x2d8(%rsp), %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x4571f(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x4ca18(%rip), %rsi     # 0xa895c
movq %rax, %rdi
callq 0x18a16
leaq 0x493d7(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5bf78
movq %r15, %rdi
addq $0x10, %rdi
movl $0x1, %esi
callq 0x22f0
leaq 0x5c3ea(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5bfab
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x2f0(%rsp), %r13
movq 0x2f8(%rsp), %r15
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x55c79(%rip), %rsi     # 0xb1c43
leaq 0x55c89(%rip), %rdx     # 0xb1c5a
callq 0xd0b8
addq %r13, %r15
xorl %esi, %esi
cmpq $0x60, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xbf0a
leaq 0x45658(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55e9f(%rip), %rsi     # 0xb1eaf
movq %rax, %rdi
callq 0x19c5c
leaq 0x4930b(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c056
movq 0x2f0(%rsp), %rax
movq 0x2f8(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x455f7(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x55bec(%rip), %rsi     # 0xb1c58
movq %rax, %rdi
callq 0x18bd6
leaq 0x492af(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c0a0
movq %r15, %rdi
addq $0x10, %rdi
movl $0x5f, %esi
callq 0x22f0
leaq 0x5c2c2(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c0d3
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x2d8(%rsp), %r13
movq 0x2e0(%rsp), %r15
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x55b69(%rip), %rsi     # 0xb1c5b
leaq 0x55b79(%rip), %rdx     # 0xb1c72
callq 0xd0b8
addq %r13, %r15
xorl %esi, %esi
cmpq $0x4d, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xbf0a
leaq 0x45530(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55dbd(%rip), %rsi     # 0xb1ef5
movq %rax, %rdi
callq 0x19c5c
leaq 0x491e3(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c17e
movq 0x2d8(%rsp), %rax
movq 0x2e0(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x454cf(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x55adc(%rip), %rsi     # 0xb1c70
movq %rax, %rdi
callq 0x18bd6
leaq 0x49187(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c1c8
movq %r15, %rdi
addq $0x10, %rdi
movl $0x4c, %esi
callq 0x22f0
leaq 0x5c19a(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %r15
movq %r15, %rdi
callq 0xbf62
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c1fe
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21f0
xorps %xmm0, %xmm0
movaps %xmm0, 0x120(%rsp)
movq $0x0, 0x130(%rsp)
leaq 0x2c0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %r14, (%rsi)
movq %r15, 0x8(%rsi)
callq 0x5fd64
movq 0x320(%rsp), %rax
leaq 0x128(%rsp), %rdi
movq %rax, -0x8(%rdi)
movl $0x9, %ecx
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl $0x0, (%rsp)
leaq 0x30(%rsp), %r14
leaq 0x120(%rsp), %rsi
movl $0x3, %edx
movl $0x2, %ecx
movl $0x5f, %r8d
movl $0x4c, %r9d
movq %r14, %rdi
callq 0x5faf9
movq 0x68(%rsp), %r15
leaq 0x90(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x559db(%rip), %rsi     # 0xb1c73
leaq 0x559ef(%rip), %rdx     # 0xb1c8e
leaq 0x80(%rsp), %rdi
callq 0xd0b8
xorl %esi, %esi
testq %r15, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0xbf0a
leaq 0x45383(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x559aa(%rip), %rsi     # 0xb1c8f
movq %rax, %rdi
callq 0x19578
leaq 0x49036(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c319
movq 0x68(%rsp), %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x45334(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x46ba8(%rip), %rsi     # 0xa2ed7
movq %rax, %rdi
callq 0x18a16
leaq 0x48fec(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c360
movq %r15, %rdi
addq $0x10, %rdi
xorl %esi, %esi
callq 0x22f0
leaq 0x5c002(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c399
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x50(%rsp), %r15
leaq 0x80(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x558f6(%rip), %rsi     # 0xb1ca6
leaq 0x5590a(%rip), %rdx     # 0xb1cc1
callq 0xd0b8
xorl %esi, %esi
testq %r15, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0xbf0a
leaq 0x45273(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x558cd(%rip), %rsi     # 0xb1cc2
movq %rax, %rdi
callq 0x19578
leaq 0x48f26(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c429
movq 0x50(%rsp), %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x45224(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x46a98(%rip), %rsi     # 0xa2ed7
movq %rax, %rdi
callq 0x18a16
leaq 0x48edc(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c470
movq %r15, %rdi
addq $0x10, %rdi
xorl %esi, %esi
callq 0x22f0
leaq 0x5bef2(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c4a9
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x68(%rsp), %r13
movq 0x70(%rsp), %r15
leaq 0x80(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x55814(%rip), %rsi     # 0xb1cd9
leaq 0x55829(%rip), %rdx     # 0xb1cf5
callq 0xd0b8
addq %r13, %r15
xorl %esi, %esi
cmpq $0x5c, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0xbf0a
leaq 0x4515a(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x557e8(%rip), %rsi     # 0xb1cf6
movq %rax, %rdi
callq 0x19578
leaq 0x48e0d(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c54e
movq 0x68(%rsp), %rax
movq 0x70(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x450ff(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x55849(%rip), %rsi     # 0xb1dad
movq %rax, %rdi
callq 0x18bd6
leaq 0x48db7(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c598
movq %r15, %rdi
addq $0x10, %rdi
movl $0x5b, %esi
callq 0x22f0
leaq 0x5bdca(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c5d1
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x50(%rsp), %r13
movq 0x58(%rsp), %r15
leaq 0x80(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x55720(%rip), %rsi     # 0xb1d0d
leaq 0x55735(%rip), %rdx     # 0xb1d29
callq 0xd0b8
addq %r13, %r15
xorl %esi, %esi
cmpq $0x4a, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0xbf0a
leaq 0x45032(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x556f4(%rip), %rsi     # 0xb1d2a
movq %rax, %rdi
callq 0x19578
leaq 0x48ce5(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c676
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x44fd7(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x5569b(%rip), %rsi     # 0xb1d27
movq %rax, %rdi
callq 0x18bd6
leaq 0x48c8f(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c6c0
movq %r15, %rdi
addq $0x10, %rdi
movl $0x49, %esi
callq 0x22f0
leaq 0x5bca2(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %r15
movq %r15, %rdi
callq 0xbf62
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c6fc
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21f0
movq $0x0, 0x120(%rsp)
movq $0x2, 0x128(%rsp)
movq $0x3, 0x130(%rsp)
leaq 0x38(%rsp), %rdi
leaq 0x80(%rsp), %rsi
movq %r14, (%rsi)
movq %r15, 0x8(%rsi)
callq 0x5fd64
movl $0x1, (%rsp)
leaq 0x80(%rsp), %r14
leaq 0x2b8(%rsp), %rsi
movl $0x4, %edx
movl $0x3, %ecx
movl $0x5c, %r8d
movl $0x49, %r9d
movq %r14, %rdi
callq 0x5faf9
movq 0xb8(%rsp), %r15
leaq 0xe0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x555b8(%rip), %rsi     # 0xb1d41
leaq 0x555c8(%rip), %rdx     # 0xb1d58
leaq 0xd0(%rsp), %rdi
callq 0xd0b8
xorl %esi, %esi
cmpq $0x4, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0xbf0a
leaq 0x44e91(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55582(%rip), %rsi     # 0xb1d59
movq %rax, %rdi
callq 0x18c46
leaq 0x48b44(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c80e
movq 0xb8(%rsp), %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x44e3f(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x49888(%rip), %rsi     # 0xa60ac
movq %rax, %rdi
callq 0x18a16
leaq 0x48af7(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c858
movq %r15, %rdi
addq $0x10, %rdi
movl $0x4, %esi
callq 0x22f0
leaq 0x5bb0a(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0xd0(%rsp), %rdi
cmpq %r13, %rdi
je 0x5c891
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xa0(%rsp), %r15
leaq 0xd0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x554c1(%rip), %rsi     # 0xb1d6c
leaq 0x554d1(%rip), %rdx     # 0xb1d83
callq 0xd0b8
xorl %esi, %esi
cmpq $0x3, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0xbf0a
leaq 0x44d77(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55493(%rip), %rsi     # 0xb1d84
movq %rax, %rdi
callq 0x18c46
leaq 0x48a2a(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c928
movq 0xa0(%rsp), %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x44d25(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x4f20b(%rip), %rsi     # 0xabb49
movq %rax, %rdi
callq 0x18a16
leaq 0x489dd(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5c972
movq %r15, %rdi
addq $0x10, %rdi
movl $0x3, %esi
callq 0x22f0
leaq 0x5b9f0(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0xd0(%rsp), %rdi
cmpq %r13, %rdi
je 0x5c9ab
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xb8(%rsp), %r12
movq 0xc0(%rsp), %r15
leaq 0xd0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x553ca(%rip), %rsi     # 0xb1d97
leaq 0x553db(%rip), %rdx     # 0xb1daf
callq 0xd0b8
addq %r12, %r15
xorl %esi, %esi
cmpq $0x5c, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0xbf0a
leaq 0x44c52(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x5539a(%rip), %rsi     # 0xb1db0
movq %rax, %rdi
callq 0x18c46
leaq 0x48905(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5ca5c
movq 0xb8(%rsp), %rax
movq 0xc0(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x44bf1(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x5533b(%rip), %rsi     # 0xb1dad
movq %rax, %rdi
callq 0x18bd6
leaq 0x488a9(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5caa6
movq %r15, %rdi
addq $0x10, %rdi
movl $0x5b, %esi
callq 0x22f0
leaq 0x5b8bc(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0xd0(%rsp), %rdi
cmpq %r13, %rdi
je 0x5cadf
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xa0(%rsp), %r12
movq 0xa8(%rsp), %r15
leaq 0xd0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x552c2(%rip), %rsi     # 0xb1dc3
leaq 0x552d3(%rip), %rdx     # 0xb1ddb
callq 0xd0b8
addq %r12, %r15
xorl %esi, %esi
cmpq $0x49, %r15
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0xbf0a
leaq 0x44b1e(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55292(%rip), %rsi     # 0xb1ddc
movq %rax, %rdi
callq 0x18c46
leaq 0x487d1(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5cb90
movq 0xa0(%rsp), %rax
movq 0xa8(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r15, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x44abd(%rip), %rsi     # 0xa1654
movq %r15, %rdi
callq 0x18a16
leaq 0x55233(%rip), %rsi     # 0xb1dd9
movq %rax, %rdi
callq 0x18bd6
leaq 0x48775(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %r15
cmpb $0x1, 0x188(%rax)
jne 0x5cbda
movq %r15, %rdi
addq $0x10, %rdi
movl $0x48, %esi
callq 0x22f0
leaq 0x5b788(%rip), %rsi     # 0xb8369
movq %r15, %rdi
callq 0x18a16
leaq 0x120(%rsp), %r12
movq %r12, %rdi
callq 0xbf62
movq 0xd0(%rsp), %rdi
cmpq %r13, %rdi
je 0x5cc16
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x21f0
xorps %xmm0, %xmm0
movaps %xmm0, 0x120(%rsp)
movq $0x0, 0x130(%rsp)
leaq 0x88(%rsp), %r15
leaq 0xd0(%rsp), %rsi
movq %r14, (%rsi)
movq %r12, 0x8(%rsi)
movq %r15, %rdi
callq 0x5fd64
movq 0x320(%rsp), %rax
leaq 0x128(%rsp), %rdi
movq %rax, -0x8(%rdi)
movl $0x9, %ecx
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl $0x1, (%rsp)
leaq 0xd0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
movl $0x32, %edx
movl $0x28, %ecx
movl $0x69, %r8d
movl $0x46, %r9d
callq 0x5faf9
movq 0x108(%rsp), %rbx
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x55139(%rip), %rsi     # 0xb1def
leaq 0x55157(%rip), %rdx     # 0xb1e14
leaq 0x10(%rsp), %rdi
callq 0xd0b8
xorl %esi, %esi
cmpq $0x32, %rbx
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbf0a
leaq 0x4496a(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x55117(%rip), %rsi     # 0xb1e15
movq %rax, %rdi
callq 0x5fc44
leaq 0x4861d(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5cd35
movq 0x108(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x44918(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x6012d(%rip), %rsi     # 0xbce78
movq %rax, %rdi
callq 0x18bd6
leaq 0x485d0(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5cd7f
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x32, %esi
callq 0x22f0
leaq 0x5b5e3(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x5cdb2
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xf0(%rsp), %rbx
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x5506c(%rip), %rsi     # 0xb1e35
leaq 0x5508a(%rip), %rdx     # 0xb1e5a
callq 0xd0b8
xorl %esi, %esi
cmpq $0x28, %rbx
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbf0a
leaq 0x4485c(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x5504f(%rip), %rsi     # 0xb1e5b
movq %rax, %rdi
callq 0x5fc44
leaq 0x4850f(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5ce43
movq 0xf0(%rsp), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x4480a(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x54fff(%rip), %rsi     # 0xb1e58
movq %rax, %rdi
callq 0x18bd6
leaq 0x484c2(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5ce8d
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x28, %esi
callq 0x22f0
leaq 0x5b4d5(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x5cec0
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x108(%rsp), %r13
movq 0x110(%rsp), %rbx
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x54f9c(%rip), %rsi     # 0xb1e7b
leaq 0x54fba(%rip), %rdx     # 0xb1ea0
callq 0xd0b8
addq %r13, %rbx
xorl %esi, %esi
cmpq $0x64, %rbx
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbf0a
leaq 0x44743(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x54f7c(%rip), %rsi     # 0xb1ea1
movq %rax, %rdi
callq 0x5fc44
leaq 0x483f6(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5cf6b
movq 0x108(%rsp), %rax
movq 0x110(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x446e2(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x54f1d(%rip), %rsi     # 0xb1e9e
movq %rax, %rdi
callq 0x18bd6
leaq 0x4839a(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5cfb5
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x63, %esi
callq 0x22f0
leaq 0x5b3ad(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x5cfe8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xf0(%rsp), %r13
movq 0xf8(%rsp), %rbx
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x54eba(%rip), %rsi     # 0xb1ec1
leaq 0x54ed8(%rip), %rdx     # 0xb1ee6
callq 0xd0b8
addq %r13, %rbx
xorl %esi, %esi
cmpq $0x46, %rbx
sete %sil
leaq 0x120(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbf0a
leaq 0x4461b(%rip), %rsi     # 0xa1654
leaq 0x120(%rsp), %rdi
callq 0x18a16
leaq 0x54e9a(%rip), %rsi     # 0xb1ee7
movq %rax, %rdi
callq 0x5fc44
leaq 0x482ce(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5d093
movq 0xf0(%rsp), %rax
movq 0xf8(%rsp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x21b0
leaq 0x445ba(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x54e3b(%rip), %rsi     # 0xb1ee4
movq %rax, %rdi
callq 0x18bd6
leaq 0x48272(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x5d0dd
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x45, %esi
callq 0x22f0
leaq 0x5b285(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x120(%rsp), %rbx
movq %rbx, %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x5d113
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
xorps %xmm0, %xmm0
movaps %xmm0, 0x120(%rsp)
movq $0x0, 0x130(%rsp)
leaq 0x10(%rsp), %rsi
movq %r14, (%rsi)
movq %rbx, 0x8(%rsi)
movq %r15, %rdi
callq 0x5fd64
leaq 0x308(%rsp), %rdi
callq 0xd16c
addq $0x370, %rsp            # imm = 0x370
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x5d3f8
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
jmp 0x5d191
movq %rax, %rbx
jmp 0x5d3e1
jmp 0x5d265
jmp 0x5d277
jmp 0x5d289
jmp 0x5d29b
jmp 0x5d2c3
jmp 0x5d2d5
jmp 0x5d2e7
jmp 0x5d2f9
jmp 0x5d327
jmp 0x5d339
jmp 0x5d34b
jmp 0x5d35d
jmp 0x5d384
jmp 0x5d396
jmp 0x5d3a8
jmp 0x5d3ba
jmp 0x5d1ef
jmp 0x5d1ef
jmp 0x5d1ef
movq %rax, %rbx
jmp 0x5d2ab
jmp 0x5d1fd
jmp 0x5d1fd
jmp 0x5d1fd
movq %rax, %rbx
jmp 0x5d309
jmp 0x5d20b
jmp 0x5d20b
jmp 0x5d20b
movq %rax, %rbx
jmp 0x5d36d
jmp 0x5d219
jmp 0x5d219
jmp 0x5d219
movq %rax, %rbx
jmp 0x5d3ca
jmp 0x5d265
jmp 0x5d277
jmp 0x5d289
jmp 0x5d29b
jmp 0x5d2c3
jmp 0x5d2d5
jmp 0x5d2e7
jmp 0x5d2f9
jmp 0x5d327
jmp 0x5d339
jmp 0x5d34b
jmp 0x5d35d
jmp 0x5d384
jmp 0x5d396
jmp 0x5d3a8
jmp 0x5d3ba
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d2ab
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d2ab
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d2ab
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x5d3e1
movq 0x20(%rsp), %rsi
jmp 0x5d3d9
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d309
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d309
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d309
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0xd0(%rsp), %rdi
cmpq %r13, %rdi
je 0x5d3e1
movq 0xe0(%rsp), %rsi
jmp 0x5d3d9
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d36d
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d36d
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d36d
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5d3e1
movq 0x90(%rsp), %rsi
jmp 0x5d3d9
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d3ca
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d3ca
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
jmp 0x5d3ca
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xbf62
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5d3e1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x308(%rsp), %rdi
callq 0xd16c
movq %rbx, %rdi
callq 0x2300
jmp 0x5d3f8
movq %rax, %rdi
callq 0xc036