// File: schaefed[P]Ndarray/test/test_ndarray.cpp
// Function: testSlicing()
void testSlicing(){

	array<size_t, 2> shape = {16, 16};
	vector<int64_t> basevec  = range(0, 16*16);
	auto array = ndarray<int64_t, 2>(basevec.data(), shape);

	auto sliced1 = array[0][Slice<>(1,8)];
	assert (sliced1.shape[0] == 7); // Slicing return wrong shape
	assert (sliced1[0] == 1); // Slicing test failed
	assert (sliced1[1] == 2); // Slicing test failed
	assert (sliced1[4] == 5); // Slicing test failed
	assert (sliced1[6] == 7); // Slicing test failed

	auto sliced2 = array[Slice<>(0,3)];
	assert (sliced2.shape[0] == 3); // Slicing return wrong shape
	assert (sliced2.shape[1] == 16); // Slicing return wrong shape
	assert (sliced2[0][0] == 0); // Slicing test failed
	assert (sliced2[0][7] == 7); // Slicing test failed
	assert (sliced2[0][15] == 15); // Slicing test failed
	assert (sliced2[1][0] == 16); // Slicing test failed
	assert (sliced2[1][7] == 23); // Slicing test failed
	assert (sliced2[1][15] == 31); // Slicing test failed
	assert (sliced2[2][0] == 32); // Slicing test failed
	assert (sliced2[2][7] == 39); // Slicing test failed
	assert (sliced2[2][15] == 47); // Slicing test failed

	auto sliced3 = array[0][Slice<>(1,11,2)];
	assert (sliced3.shape[0] == 5); // Slicing return wrong shape
	assert (sliced3[0] == 1); // Slicing test failed
	assert (sliced3[1] == 3); // Slicing test failed
	assert (sliced3[4] == 9); // Slicing test failed

	auto sliced4 = array[2][Slice<>(1,11,2)];
	assert (sliced4.shape[0] == 5); // Slicing return wrong shape
	assert (sliced4[0] == 32 + 1); // Slicing test failed
	assert (sliced4[1] == 32 + 3); // Slicing test failed
	assert (sliced4[4] == 32 + 9); // Slicing test failed

	auto sliced5 = array[-1];
	assert (sliced5[0] == 240); // negative integer slicing failed
	assert (sliced5[6] == 246); // negative integer slicing failed
	assert (sliced5[-10] == 246); // negative integer slicing failed
	assert (sliced5[-1] == 255); // negative integer slicing failed

	auto sliced6 = array[0][Slice<>(0,-3)];
	assert (sliced6[0] == 0); // negative integer slicing failed
	assert (sliced6[6] == 6); // negative integer slicing failed
	assert (sliced6[12] == 12); // negative integer slicing failed
	assert (sliced6[-1] == 12); // negative integer slicing failed

	auto sliced7 = array[-5][Slice<>(-12,-3,2)];
	assert (sliced7[0] == 180); // negative integer slicing failed
	assert (sliced7[2] == 184); // negative integer slicing failed
	assert (sliced7[-3] == 184); // negative integer slicing failed

	auto sliced8 = array[Slice<0>(0,-1,2)][Slice<1>(0,-1,2)];
	assert (sliced8[0][0] == 0);
	assert (sliced8[0][3] == 6);
	assert (sliced8[0][-1] == 14);
	assert (sliced8[-2][0] == 192);
	assert (sliced8[-2][3] == 198);
	assert (sliced8[-2][-1] == 206);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x8b0, %rsp            # imm = 0x8B0
movups 0xa08e(%rip), %xmm0     # 0xd030
movaps %xmm0, -0x10(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x28(%rbp), %rdi
movq %rdi, -0x768(%rbp)
movl $0x100, %edx            # imm = 0x100
movl $0x1, %ecx
callq 0x24e0
movq -0x768(%rbp), %rdi
callq 0x54b0
movq %rax, -0x760(%rbp)
movaps -0x10(%rbp), %xmm0
movaps %xmm0, -0x80(%rbp)
leaq 0x24ea(%rip), %rsi      # 0x54d0
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x758(%rbp)
callq 0x54e0
movq -0x760(%rbp), %rsi
movq -0x758(%rbp), %r8
movq -0x80(%rbp), %rdx
movq -0x78(%rbp), %rcx
leaq -0x68(%rbp), %rdi
callq 0x5330
jmp 0x301a
leaq -0xa0(%rbp), %rdi
callq 0x5570
xorl %eax, %eax
movl %eax, %edx
leaq -0x110(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x5590
jmp 0x303c
leaq -0x130(%rbp), %rdi
movl $0x8, %edx
movl $0x1, %ecx
movq %rcx, %rsi
callq 0x6360
jmp 0x3057
movups -0x130(%rbp), %xmm0
movups -0x120(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0xe0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x60f0
jmp 0x3084
leaq -0x110(%rbp), %rdi
callq 0x6010
leaq -0xe0(%rbp), %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x63a0
cmpq $0x7, (%rax)
jne 0x30ac
jmp 0x3128
leaq 0xa088(%rip), %rdi      # 0xd13b
leaq 0x9fc6(%rip), %rsi      # 0xd080
movl $0x3a, %edx
leaq 0xa08b(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5570
jmp 0x459d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4594
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x6010
jmp 0x4594
xorl %eax, %eax
movl %eax, %esi
leaq -0xe0(%rbp), %rdi
callq 0x5750
movq %rax, -0x770(%rbp)
jmp 0x3141
movq -0x770(%rbp), %rax
cmpq $0x1, (%rax)
jne 0x3150
jmp 0x3186
leaq 0xa00d(%rip), %rdi      # 0xd164
leaq 0x9f22(%rip), %rsi      # 0xd080
movl $0x3b, %edx
leaq 0x9fe7(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4588
leaq -0xe0(%rbp), %rdi
movl $0x1, %esi
callq 0x5750
movq %rax, -0x778(%rbp)
jmp 0x31a0
movq -0x778(%rbp), %rax
cmpq $0x2, (%rax)
jne 0x31af
jmp 0x31ce
leaq 0x9fbe(%rip), %rdi      # 0xd174
leaq 0x9ec3(%rip), %rsi      # 0xd080
movl $0x3c, %edx
leaq 0x9f88(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0xe0(%rbp), %rdi
movl $0x4, %esi
callq 0x5750
movq %rax, -0x780(%rbp)
jmp 0x31e8
movq -0x780(%rbp), %rax
cmpq $0x5, (%rax)
jne 0x31f7
jmp 0x3216
leaq 0x9f86(%rip), %rdi      # 0xd184
leaq 0x9e7b(%rip), %rsi      # 0xd080
movl $0x3d, %edx
leaq 0x9f40(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0xe0(%rbp), %rdi
movl $0x6, %esi
callq 0x5750
movq %rax, -0x788(%rbp)
jmp 0x3230
movq -0x788(%rbp), %rax
cmpq $0x7, (%rax)
jne 0x323f
jmp 0x325e
leaq 0x9f4e(%rip), %rdi      # 0xd194
leaq 0x9e33(%rip), %rsi      # 0xd080
movl $0x3e, %edx
leaq 0x9ef8(%rip), %rcx      # 0xd151
callq 0x2100
xorl %eax, %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
movl $0x3, %edx
movl $0x1, %ecx
callq 0x6360
jmp 0x327a
movups -0x190(%rbp), %xmm0
movups -0x180(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x170(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x63d0
jmp 0x32a4
leaq -0x170(%rbp), %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5fe0
cmpq $0x3, (%rax)
jne 0x32c0
jmp 0x32df
leaq 0x9edd(%rip), %rdi      # 0xd1a4
leaq 0x9db2(%rip), %rsi      # 0xd080
movl $0x41, %edx
leaq 0x9e77(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x170(%rbp), %rdi
addq $0x20, %rdi
movl $0x1, %esi
callq 0x5fe0
cmpq $0x10, (%rax)
jne 0x32fc
jmp 0x331b
leaq 0x9eb7(%rip), %rdi      # 0xd1ba
leaq 0x9d76(%rip), %rsi      # 0xd080
movl $0x42, %edx
leaq 0x9e3b(%rip), %rcx      # 0xd151
callq 0x2100
xorl %eax, %eax
movl %eax, %edx
leaq -0x1c0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x5590
jmp 0x3334
xorl %eax, %eax
movl %eax, %esi
leaq -0x1c0(%rbp), %rdi
callq 0x5750
movq %rax, -0x790(%rbp)
jmp 0x334d
movq -0x790(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x335c
jmp 0x33b5
leaq 0x9e6e(%rip), %rdi      # 0xd1d1
leaq 0x9d16(%rip), %rsi      # 0xd080
movl $0x43, %edx
leaq 0x9ddb(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x457c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x1c0(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %edx
leaq -0x1f0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x5590
jmp 0x33da
leaq -0x1f0(%rbp), %rdi
movl $0x7, %esi
callq 0x5750
movq %rax, -0x798(%rbp)
jmp 0x33f4
movq -0x798(%rbp), %rax
cmpq $0x7, (%rax)
jne 0x3403
jmp 0x3445
leaq 0x9dda(%rip), %rdi      # 0xd1e4
leaq 0x9c6f(%rip), %rsi      # 0xd080
movl $0x44, %edx
leaq 0x9d34(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x1f0(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %edx
leaq -0x220(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x5590
jmp 0x346a
leaq -0x220(%rbp), %rdi
movl $0xf, %esi
callq 0x5750
movq %rax, -0x7a0(%rbp)
jmp 0x3484
movq -0x7a0(%rbp), %rax
cmpq $0xf, (%rax)
jne 0x3493
jmp 0x34d5
leaq 0x9d5d(%rip), %rdi      # 0xd1f7
leaq 0x9bdf(%rip), %rsi      # 0xd080
movl $0x45, %edx
leaq 0x9ca4(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x220(%rbp), %rdi
callq 0x6010
leaq -0x250(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl $0x1, %edx
callq 0x5590
jmp 0x34fb
xorl %eax, %eax
movl %eax, %esi
leaq -0x250(%rbp), %rdi
callq 0x5750
movq %rax, -0x7a8(%rbp)
jmp 0x3514
movq -0x7a8(%rbp), %rax
cmpq $0x10, (%rax)
jne 0x3523
jmp 0x3565
leaq 0x9ce2(%rip), %rdi      # 0xd20c
leaq 0x9b4f(%rip), %rsi      # 0xd080
movl $0x46, %edx
leaq 0x9c14(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x250(%rbp), %rdi
callq 0x6010
leaq -0x280(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl $0x1, %edx
callq 0x5590
jmp 0x358b
leaq -0x280(%rbp), %rdi
movl $0x7, %esi
callq 0x5750
movq %rax, -0x7b0(%rbp)
jmp 0x35a5
movq -0x7b0(%rbp), %rax
cmpq $0x17, (%rax)
jne 0x35b4
jmp 0x35f6
leaq 0x9c65(%rip), %rdi      # 0xd220
leaq 0x9abe(%rip), %rsi      # 0xd080
movl $0x47, %edx
leaq 0x9b83(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x280(%rbp), %rdi
callq 0x6010
leaq -0x2b0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl $0x1, %edx
callq 0x5590
jmp 0x361c
leaq -0x2b0(%rbp), %rdi
movl $0xf, %esi
callq 0x5750
movq %rax, -0x7b8(%rbp)
jmp 0x3636
movq -0x7b8(%rbp), %rax
cmpq $0x1f, (%rax)
jne 0x3645
jmp 0x3687
leaq 0x9be8(%rip), %rdi      # 0xd234
leaq 0x9a2d(%rip), %rsi      # 0xd080
movl $0x48, %edx
leaq 0x9af2(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x2b0(%rbp), %rdi
callq 0x6010
leaq -0x2e0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl $0x2, %edx
callq 0x5590
jmp 0x36ad
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e0(%rbp), %rdi
callq 0x5750
movq %rax, -0x7c0(%rbp)
jmp 0x36c6
movq -0x7c0(%rbp), %rax
cmpq $0x20, (%rax)
jne 0x36d5
jmp 0x3717
leaq 0x9b6d(%rip), %rdi      # 0xd249
leaq 0x999d(%rip), %rsi      # 0xd080
movl $0x49, %edx
leaq 0x9a62(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x2e0(%rbp), %rdi
callq 0x6010
leaq -0x310(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl $0x2, %edx
callq 0x5590
jmp 0x373d
leaq -0x310(%rbp), %rdi
movl $0x7, %esi
callq 0x5750
movq %rax, -0x7c8(%rbp)
jmp 0x3757
movq -0x7c8(%rbp), %rax
cmpq $0x27, (%rax)
jne 0x3766
jmp 0x37a8
leaq 0x9af0(%rip), %rdi      # 0xd25d
leaq 0x990c(%rip), %rsi      # 0xd080
movl $0x4a, %edx
leaq 0x99d1(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x310(%rbp), %rdi
callq 0x6010
leaq -0x340(%rbp), %rdi
leaq -0x170(%rbp), %rsi
movl $0x2, %edx
callq 0x5590
jmp 0x37ce
leaq -0x340(%rbp), %rdi
movl $0xf, %esi
callq 0x5750
movq %rax, -0x7d0(%rbp)
jmp 0x37e8
movq -0x7d0(%rbp), %rax
cmpq $0x2f, (%rax)
jne 0x37f7
jmp 0x3839
leaq 0x9a73(%rip), %rdi      # 0xd271
leaq 0x987b(%rip), %rsi      # 0xd080
movl $0x4b, %edx
leaq 0x9940(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x6010
jmp 0x457c
leaq -0x340(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %edx
leaq -0x3a0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x5590
jmp 0x385b
leaq -0x3c0(%rbp), %rdi
movl $0x1, %esi
movl $0xb, %edx
movl $0x2, %ecx
callq 0x6360
jmp 0x3878
movups -0x3c0(%rbp), %xmm0
movups -0x3b0(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x370(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x60f0
jmp 0x38a5
leaq -0x3a0(%rbp), %rdi
callq 0x6010
leaq -0x370(%rbp), %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x63a0
cmpq $0x5, (%rax)
jne 0x38cd
jmp 0x390f
leaq 0x99b2(%rip), %rdi      # 0xd286
leaq 0x97a5(%rip), %rsi      # 0xd080
movl $0x4e, %edx
leaq 0x986a(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x6010
jmp 0x457c
xorl %eax, %eax
movl %eax, %esi
leaq -0x370(%rbp), %rdi
callq 0x5750
movq %rax, -0x7d8(%rbp)
jmp 0x3928
movq -0x7d8(%rbp), %rax
cmpq $0x1, (%rax)
jne 0x3937
jmp 0x396d
leaq 0x995e(%rip), %rdi      # 0xd29c
leaq 0x973b(%rip), %rsi      # 0xd080
movl $0x4f, %edx
leaq 0x9800(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4570
leaq -0x370(%rbp), %rdi
movl $0x1, %esi
callq 0x5750
movq %rax, -0x7e0(%rbp)
jmp 0x3987
movq -0x7e0(%rbp), %rax
cmpq $0x3, (%rax)
jne 0x3996
jmp 0x39b5
leaq 0x990f(%rip), %rdi      # 0xd2ac
leaq 0x96dc(%rip), %rsi      # 0xd080
movl $0x50, %edx
leaq 0x97a1(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x370(%rbp), %rdi
movl $0x4, %esi
callq 0x5750
movq %rax, -0x7e8(%rbp)
jmp 0x39cf
movq -0x7e8(%rbp), %rax
cmpq $0x9, (%rax)
jne 0x39de
jmp 0x39fd
leaq 0x98d7(%rip), %rdi      # 0xd2bc
leaq 0x9694(%rip), %rsi      # 0xd080
movl $0x51, %edx
leaq 0x9759(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x420(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movl $0x2, %edx
callq 0x5590
jmp 0x3a14
leaq -0x440(%rbp), %rdi
movl $0x1, %esi
movl $0xb, %edx
movl $0x2, %ecx
callq 0x6360
jmp 0x3a31
movups -0x440(%rbp), %xmm0
movups -0x430(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x3f0(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x60f0
jmp 0x3a5e
leaq -0x420(%rbp), %rdi
callq 0x6010
leaq -0x3f0(%rbp), %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x63a0
cmpq $0x5, (%rax)
jne 0x3a86
jmp 0x3ac8
leaq 0x983f(%rip), %rdi      # 0xd2cc
leaq 0x95ec(%rip), %rsi      # 0xd080
movl $0x54, %edx
leaq 0x96b1(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x6010
jmp 0x4570
xorl %eax, %eax
movl %eax, %esi
leaq -0x3f0(%rbp), %rdi
callq 0x5750
movq %rax, -0x7f0(%rbp)
jmp 0x3ae1
movq -0x7f0(%rbp), %rax
cmpq $0x21, (%rax)
jne 0x3af0
jmp 0x3b26
leaq 0x97eb(%rip), %rdi      # 0xd2e2
leaq 0x9582(%rip), %rsi      # 0xd080
movl $0x55, %edx
leaq 0x9647(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4564
leaq -0x3f0(%rbp), %rdi
movl $0x1, %esi
callq 0x5750
movq %rax, -0x7f8(%rbp)
jmp 0x3b40
movq -0x7f8(%rbp), %rax
cmpq $0x23, (%rax)
jne 0x3b4f
jmp 0x3b6e
leaq 0x97a1(%rip), %rdi      # 0xd2f7
leaq 0x9523(%rip), %rsi      # 0xd080
movl $0x56, %edx
leaq 0x95e8(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x3f0(%rbp), %rdi
movl $0x4, %esi
callq 0x5750
movq %rax, -0x800(%rbp)
jmp 0x3b88
movq -0x800(%rbp), %rax
cmpq $0x29, (%rax)
jne 0x3b97
jmp 0x3bb6
leaq 0x976e(%rip), %rdi      # 0xd30c
leaq 0x94db(%rip), %rsi      # 0xd080
movl $0x57, %edx
leaq 0x95a0(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x470(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movq $-0x1, %rdx
callq 0x5590
jmp 0x3bcf
xorl %eax, %eax
movl %eax, %esi
leaq -0x470(%rbp), %rdi
callq 0x5750
movq %rax, -0x808(%rbp)
jmp 0x3be8
movq -0x808(%rbp), %rax
cmpq $0xf0, (%rax)
jne 0x3bfa
jmp 0x3c30
leaq 0x9720(%rip), %rdi      # 0xd321
leaq 0x9478(%rip), %rsi      # 0xd080
movl $0x5a, %edx
leaq 0x953d(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4558
leaq -0x470(%rbp), %rdi
movl $0x6, %esi
callq 0x5750
movq %rax, -0x810(%rbp)
jmp 0x3c4a
movq -0x810(%rbp), %rax
cmpq $0xf6, (%rax)
jne 0x3c5c
jmp 0x3c7b
leaq 0x96d0(%rip), %rdi      # 0xd333
leaq 0x9416(%rip), %rsi      # 0xd080
movl $0x5b, %edx
leaq 0x94db(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x470(%rbp), %rdi
movq $-0xa, %rsi
callq 0x5750
movq %rax, -0x818(%rbp)
jmp 0x3c97
movq -0x818(%rbp), %rax
cmpq $0xf6, (%rax)
jne 0x3ca9
jmp 0x3cc8
leaq 0x9695(%rip), %rdi      # 0xd345
leaq 0x93c9(%rip), %rsi      # 0xd080
movl $0x5c, %edx
leaq 0x948e(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x470(%rbp), %rdi
movq $-0x1, %rsi
callq 0x5750
movq %rax, -0x820(%rbp)
jmp 0x3ce4
movq -0x820(%rbp), %rax
cmpq $0xff, (%rax)
jne 0x3cf6
jmp 0x3d15
leaq 0x965c(%rip), %rdi      # 0xd359
leaq 0x937c(%rip), %rsi      # 0xd080
movl $0x5d, %edx
leaq 0x9441(%rip), %rcx      # 0xd151
callq 0x2100
xorl %eax, %eax
movl %eax, %edx
leaq -0x4d0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x5590
jmp 0x3d2b
xorl %eax, %eax
movl %eax, %esi
leaq -0x4f0(%rbp), %rdi
movq $-0x3, %rdx
movl $0x1, %ecx
callq 0x6360
jmp 0x3d49
movups -0x4f0(%rbp), %xmm0
movups -0x4e0(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x4a0(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x60f0
jmp 0x3d76
leaq -0x4d0(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %esi
leaq -0x4a0(%rbp), %rdi
callq 0x5750
movq %rax, -0x828(%rbp)
jmp 0x3d9b
movq -0x828(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x3daa
jmp 0x3e03
leaq 0x95bb(%rip), %rdi      # 0xd36c
leaq 0x92c8(%rip), %rsi      # 0xd080
movl $0x60, %edx
leaq 0x938d(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x6010
jmp 0x4558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x454c
leaq -0x4a0(%rbp), %rdi
movl $0x6, %esi
callq 0x5750
movq %rax, -0x830(%rbp)
jmp 0x3e1d
movq -0x830(%rbp), %rax
cmpq $0x6, (%rax)
jne 0x3e2c
jmp 0x3e4b
leaq 0x9549(%rip), %rdi      # 0xd37c
leaq 0x9246(%rip), %rsi      # 0xd080
movl $0x61, %edx
leaq 0x930b(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x4a0(%rbp), %rdi
movl $0xc, %esi
callq 0x5750
movq %rax, -0x838(%rbp)
jmp 0x3e65
movq -0x838(%rbp), %rax
cmpq $0xc, (%rax)
jne 0x3e74
jmp 0x3e93
leaq 0x9511(%rip), %rdi      # 0xd38c
leaq 0x91fe(%rip), %rsi      # 0xd080
movl $0x62, %edx
leaq 0x92c3(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x4a0(%rbp), %rdi
movq $-0x1, %rsi
callq 0x5750
movq %rax, -0x840(%rbp)
jmp 0x3eaf
movq -0x840(%rbp), %rax
cmpq $0xc, (%rax)
jne 0x3ebe
jmp 0x3edd
leaq 0x94d9(%rip), %rdi      # 0xd39e
leaq 0x91b4(%rip), %rsi      # 0xd080
movl $0x63, %edx
leaq 0x9279(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x550(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movq $-0x5, %rdx
callq 0x5590
jmp 0x3ef6
leaq -0x570(%rbp), %rdi
movq $-0xc, %rsi
movq $-0x3, %rdx
movl $0x2, %ecx
callq 0x6360
jmp 0x3f17
movups -0x570(%rbp), %xmm0
movups -0x560(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x520(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x60f0
jmp 0x3f44
leaq -0x550(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %esi
leaq -0x520(%rbp), %rdi
callq 0x5750
movq %rax, -0x848(%rbp)
jmp 0x3f69
movq -0x848(%rbp), %rax
cmpq $0xb4, (%rax)
jne 0x3f7b
jmp 0x3fd4
leaq 0x942e(%rip), %rdi      # 0xd3b0
leaq 0x90f7(%rip), %rsi      # 0xd080
movl $0x66, %edx
leaq 0x91bc(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x6010
jmp 0x454c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4540
leaq -0x520(%rbp), %rdi
movl $0x2, %esi
callq 0x5750
movq %rax, -0x850(%rbp)
jmp 0x3fee
movq -0x850(%rbp), %rax
cmpq $0xb8, (%rax)
jne 0x4000
jmp 0x401f
leaq 0x93bb(%rip), %rdi      # 0xd3c2
leaq 0x9072(%rip), %rsi      # 0xd080
movl $0x67, %edx
leaq 0x9137(%rip), %rcx      # 0xd151
callq 0x2100
leaq -0x520(%rbp), %rdi
movq $-0x3, %rsi
callq 0x5750
movq %rax, -0x858(%rbp)
jmp 0x403b
movq -0x858(%rbp), %rax
cmpq $0xb8, (%rax)
jne 0x404d
jmp 0x406c
leaq 0x9380(%rip), %rdi      # 0xd3d4
leaq 0x9025(%rip), %rsi      # 0xd080
movl $0x68, %edx
leaq 0x90ea(%rip), %rcx      # 0xd151
callq 0x2100
xorl %eax, %eax
movl %eax, %esi
leaq -0x610(%rbp), %rdi
movq $-0x1, %rdx
movl $0x2, %ecx
callq 0x6360
jmp 0x408a
movups -0x610(%rbp), %xmm0
movups -0x600(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x5f0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x63d0
jmp 0x40b4
xorl %eax, %eax
movl %eax, %esi
leaq -0x630(%rbp), %rdi
movq $-0x1, %rdx
movl $0x2, %ecx
callq 0x5ce0
jmp 0x40d2
movups -0x630(%rbp), %xmm0
movups -0x620(%rbp), %xmm1
movq %rsp, %rax
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x5b0(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0x5a20
jmp 0x40ff
leaq -0x5f0(%rbp), %rdi
callq 0x5880
xorl %eax, %eax
movl %eax, %edx
leaq -0x660(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x5590
jmp 0x4124
xorl %eax, %eax
movl %eax, %esi
leaq -0x660(%rbp), %rdi
callq 0x5750
movq %rax, -0x860(%rbp)
jmp 0x413d
movq -0x860(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x414c
jmp 0x41c8
leaq 0x9294(%rip), %rdi      # 0xd3e7
leaq 0x8f26(%rip), %rsi      # 0xd080
movl $0x6b, %edx
leaq 0x8feb(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0x5880
jmp 0x4540
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x4534
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x660(%rbp), %rdi
callq 0x6010
jmp 0x4534
leaq -0x660(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %edx
leaq -0x690(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x5590
jmp 0x41ed
leaq -0x690(%rbp), %rdi
movl $0x3, %esi
callq 0x5750
movq %rax, -0x868(%rbp)
jmp 0x4207
movq -0x868(%rbp), %rax
cmpq $0x6, (%rax)
jne 0x4216
jmp 0x4258
leaq 0x91dd(%rip), %rdi      # 0xd3fa
leaq 0x8e5c(%rip), %rsi      # 0xd080
movl $0x6c, %edx
leaq 0x8f21(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x6010
jmp 0x4534
leaq -0x690(%rbp), %rdi
callq 0x6010
xorl %eax, %eax
movl %eax, %edx
leaq -0x6c0(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x5590
jmp 0x427d
leaq -0x6c0(%rbp), %rdi
movq $-0x1, %rsi
callq 0x5750
movq %rax, -0x870(%rbp)
jmp 0x4299
movq -0x870(%rbp), %rax
cmpq $0xe, (%rax)
jne 0x42a8
jmp 0x42ea
leaq 0x915e(%rip), %rdi      # 0xd40d
leaq 0x8dca(%rip), %rsi      # 0xd080
movl $0x6d, %edx
leaq 0x8e8f(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x6010
jmp 0x4534
leaq -0x6c0(%rbp), %rdi
callq 0x6010
leaq -0x6f0(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
movq $-0x2, %rdx
callq 0x5590
jmp 0x4312
xorl %eax, %eax
movl %eax, %esi
leaq -0x6f0(%rbp), %rdi
callq 0x5750
movq %rax, -0x878(%rbp)
jmp 0x432b
movq -0x878(%rbp), %rax
cmpq $0xc0, (%rax)
jne 0x433d
jmp 0x437f
leaq 0x90de(%rip), %rdi      # 0xd422
leaq 0x8d35(%rip), %rsi      # 0xd080
movl $0x6e, %edx
leaq 0x8dfa(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x6010
jmp 0x4534
leaq -0x6f0(%rbp), %rdi
callq 0x6010
leaq -0x720(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
movq $-0x2, %rdx
callq 0x5590
jmp 0x43a7
leaq -0x720(%rbp), %rdi
movl $0x3, %esi
callq 0x5750
movq %rax, -0x880(%rbp)
jmp 0x43c1
movq -0x880(%rbp), %rax
cmpq $0xc6, (%rax)
jne 0x43d3
jmp 0x4415
leaq 0x905e(%rip), %rdi      # 0xd438
leaq 0x8c9f(%rip), %rsi      # 0xd080
movl $0x6f, %edx
leaq 0x8d64(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x720(%rbp), %rdi
callq 0x6010
jmp 0x4534
leaq -0x720(%rbp), %rdi
callq 0x6010
leaq -0x750(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
movq $-0x2, %rdx
callq 0x5590
jmp 0x443d
leaq -0x750(%rbp), %rdi
movq $-0x1, %rsi
callq 0x5750
movq %rax, -0x888(%rbp)
jmp 0x4459
movq -0x888(%rbp), %rax
cmpq $0xce, (%rax)
jne 0x446b
jmp 0x44ad
leaq 0x8fdc(%rip), %rdi      # 0xd44e
leaq 0x8c07(%rip), %rsi      # 0xd080
movl $0x70, %edx
leaq 0x8ccc(%rip), %rcx      # 0xd151
callq 0x2100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x6010
jmp 0x4534
leaq -0x750(%rbp), %rdi
callq 0x6010
leaq -0x5b0(%rbp), %rdi
callq 0x5880
leaq -0x520(%rbp), %rdi
callq 0x6010
leaq -0x4a0(%rbp), %rdi
callq 0x6010
leaq -0x470(%rbp), %rdi
callq 0x6010
leaq -0x3f0(%rbp), %rdi
callq 0x6010
leaq -0x370(%rbp), %rdi
callq 0x6010
leaq -0x170(%rbp), %rdi
callq 0x5880
leaq -0xe0(%rbp), %rdi
callq 0x6010
leaq -0x68(%rbp), %rdi
callq 0x5880
leaq -0x28(%rbp), %rdi
callq 0x5290
addq $0x8b0, %rsp            # imm = 0x8B0
popq %rbp
retq
leaq -0x5b0(%rbp), %rdi
callq 0x5880
leaq -0x520(%rbp), %rdi
callq 0x6010
leaq -0x4a0(%rbp), %rdi
callq 0x6010
leaq -0x470(%rbp), %rdi
callq 0x6010
leaq -0x3f0(%rbp), %rdi
callq 0x6010
leaq -0x370(%rbp), %rdi
callq 0x6010
leaq -0x170(%rbp), %rdi
callq 0x5880
leaq -0xe0(%rbp), %rdi
callq 0x6010
leaq -0x68(%rbp), %rdi
callq 0x5880
leaq -0x28(%rbp), %rdi
callq 0x5290
movq -0xa8(%rbp), %rdi
callq 0x2270
nopw %cs:(%rax,%rax)