// File: iZhangHui[P]CppPrimer/CH16_TemplatesAndGenericProgramming/examples/Array.cc
// Function: main
int main()
{
    Blob<int> ia;                // empty Blob<int>
	Blob<int> ia2 = {0,1,2,3,4}; // Blob<int> with five elements
	vector<int> v1(10, 0); // ten elements initialized to 0
    Blob<int> ia3(v1.begin(), v1.end());  // copy elements from v1
    cout << ia << "\n" << ia2 << "\n" << ia3 << endl;

    // these definitions instantiate two distinct Blob types
    Blob<string> names; // Blob that holds strings
    Blob<double> prices;// different element type

	// instantiates Blob<string> class and its
	//  initializer_list<const char*> constructor
	Blob<string> articles = {"a", "an", "the"}; // three elements

	// instantiates Blob<int> and the initializer_list<int> constructor
	Blob<int> squares = {0,1,2,3,4,5,6,7,8,9};

	// instantiates Blob<int>::size() const
    cout << squares << endl;
	for (size_t i = 0; i != squares.size(); ++i)
		squares[i] = i*i; // instantiates Blob<int>::operator[](size_t)
    cout << squares << endl;

	// instantiates the Blob<int> constructor that has
	// two vector<long>::iterator parameters
	vector<long> vl = {0,1,2,3,4,5,6,7,8,9};
	Blob<int> a1(vl.begin(), vl.end());   // copy from a vector

	// instantiates the Blob<int> class
	// and the Blob<int> constructor that has two int* parameters
	int arr[] = {0,1,2,3,4,5,6,7,8,9};
	Blob<int> a2(begin(arr), end(arr));   // copy from an array

	list<int> li(10, 0); // 10 elements all zeros
	Blob<int> zeros(li.begin(), li.end());  // copy from a list

    cout << a1 << "\n" << zeros << endl;

	a1.swap(zeros);
    cout << a1 << "\n" << zeros << endl;

	list<const char*> w = {"now", "is", "the", "time"};

	// instantiates the Blob<string> class and the Blob<string>
	// constructor that has two (list<const char*>::iterator parameters
	Blob<string> a3(w.begin(), w.end());  // copy from a list

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x560, %rsp            # imm = 0x560
movl $0x0, -0x4(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x30f0
movups 0xacbe(%rip), %xmm0     # 0xd010
movaps %xmm0, -0x50(%rbp)
movl $0x4, -0x40(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x5, -0x30(%rbp)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x3110
jmp 0x2380
movl $0x0, -0x7c(%rbp)
leaq -0x7d(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x3140
movq -0x3d0(%rbp), %rcx
leaq -0x78(%rbp), %rdi
movl $0xa, %esi
leaq -0x7c(%rbp), %rdx
callq 0x3160
jmp 0x23b2
leaq -0x7d(%rbp), %rdi
callq 0x31e0
leaq -0x78(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
callq 0x3200
movq -0x3d8(%rbp), %rdi
movq %rax, -0x98(%rbp)
callq 0x3230
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rsi
movq -0xa0(%rbp), %rdx
leaq -0x90(%rbp), %rdi
callq 0x3260
jmp 0x2401
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
leaq -0x18(%rbp), %rsi
callq 0x3330
movq -0x3e8(%rbp), %rsi
movq 0x12ba2(%rip), %rdi     # 0x14fc8
callq 0x3290
movq %rax, -0x3e0(%rbp)
jmp 0x2434
movq -0x3e0(%rbp), %rdi
leaq 0xac86(%rip), %rsi      # 0xd0c8
callq 0x20f0
movq %rax, -0x3f0(%rbp)
jmp 0x2450
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x400(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x3330
movq -0x3f0(%rbp), %rdi
movq -0x400(%rbp), %rsi
callq 0x3290
movq %rax, -0x3f8(%rbp)
jmp 0x2483
movq -0x3f8(%rbp), %rdi
leaq 0xac37(%rip), %rsi      # 0xd0c8
callq 0x20f0
movq %rax, -0x408(%rbp)
jmp 0x249f
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x418(%rbp)
leaq -0x90(%rbp), %rsi
callq 0x3330
movq -0x408(%rbp), %rdi
movq -0x418(%rbp), %rsi
callq 0x3290
movq %rax, -0x410(%rbp)
jmp 0x24d5
movq -0x410(%rbp), %rdi
movq 0x12acd(%rip), %rsi     # 0x14fb0
callq 0x2120
jmp 0x24ea
leaq -0xd0(%rbp), %rdi
callq 0x3360
leaq -0xc0(%rbp), %rdi
callq 0x3360
leaq -0xb0(%rbp), %rdi
callq 0x3360
leaq -0xe0(%rbp), %rdi
callq 0x3380
jmp 0x251c
leaq -0xf0(%rbp), %rdi
callq 0x33a0
jmp 0x252a
movb $0x1, -0x17c(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x428(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x21e0
movq -0x428(%rbp), %rdi
movq -0x420(%rbp), %rdx
leaq 0xab5c(%rip), %rsi      # 0xd0ca
callq 0x2140
jmp 0x2575
leaq -0x150(%rbp), %rax
movq %rax, -0x438(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x17a(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x21e0
movq -0x438(%rbp), %rdi
movq -0x430(%rbp), %rdx
leaq 0xab1a(%rip), %rsi      # 0xd0cc
callq 0x2140
jmp 0x25b9
leaq -0x130(%rbp), %rax
movq %rax, -0x448(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x17b(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x21e0
movq -0x448(%rbp), %rdi
movq -0x440(%rbp), %rdx
leaq 0xaad9(%rip), %rsi      # 0xd0cf
callq 0x2140
jmp 0x25fd
movb $0x0, -0x17c(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x110(%rbp)
movq $0x3, -0x108(%rbp)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
leaq -0x100(%rbp), %rdi
callq 0x33c0
jmp 0x2639
leaq -0x170(%rbp), %rax
movq %rax, -0x458(%rbp)
addq $0x60, %rax
movq %rax, -0x450(%rbp)
movq -0x450(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x460(%rbp)
callq 0x20b0
movq -0x458(%rbp), %rcx
movq -0x460(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x450(%rbp)
jne 0x2652
leaq -0x17b(%rbp), %rdi
callq 0x2130
leaq -0x17a(%rbp), %rdi
callq 0x2130
leaq -0x179(%rbp), %rdi
callq 0x2130
movabsq $0x900000008, %rax      # imm = 0x900000008
movq %rax, -0x1b0(%rbp)
movups 0xa975(%rip), %xmm0     # 0xd034
movaps %xmm0, -0x1c0(%rbp)
movups 0xa957(%rip), %xmm0     # 0xd024
movaps %xmm0, -0x1d0(%rbp)
leaq -0x1d0(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq $0xa, -0x198(%rbp)
movq -0x1a0(%rbp), %rsi
movq -0x198(%rbp), %rdx
leaq -0x190(%rbp), %rdi
callq 0x3110
jmp 0x2709
leaq -0x1e0(%rbp), %rdi
movq %rdi, -0x470(%rbp)
leaq -0x190(%rbp), %rsi
callq 0x3330
movq -0x470(%rbp), %rsi
movq 0x12897(%rip), %rdi     # 0x14fc8
callq 0x3290
movq %rax, -0x468(%rbp)
jmp 0x273f
movq -0x468(%rbp), %rdi
movq 0x12863(%rip), %rsi     # 0x14fb0
callq 0x2120
jmp 0x2754
leaq -0x1e0(%rbp), %rdi
callq 0x3360
movq $0x0, -0x1e8(%rbp)
movq -0x1e8(%rbp), %rax
movq %rax, -0x480(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x33f0
movq %rax, -0x478(%rbp)
jmp 0x278e
movq -0x480(%rbp), %rax
movq -0x478(%rbp), %rcx
cmpq %rcx, %rax
je 0x29e6
movq -0x1e8(%rbp), %rsi
movl %esi, %eax
imull %eax, %eax
movl %eax, -0x48c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x3420
movq %rax, -0x488(%rbp)
jmp 0x27cc
movq -0x488(%rbp), %rax
movl -0x48c(%rbp), %ecx
movl %ecx, (%rax)
movq -0x1e8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e8(%rbp)
jmp 0x276b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x7d(%rbp), %rdi
callq 0x31e0
jmp 0x30d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x286e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x2862
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x3360
leaq -0xc0(%rbp), %rdi
callq 0x3360
leaq -0xb0(%rbp), %rdi
callq 0x3360
jmp 0x30c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x293e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x2932
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x2926
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x4a0(%rbp)
addq $0x60, %rax
movq %rax, -0x498(%rbp)
movq -0x498(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x20b0
movq -0x4a0(%rbp), %rcx
movq -0x4a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x498(%rbp)
jne 0x28f3
jmp 0x2926
leaq -0x17b(%rbp), %rdi
callq 0x2130
leaq -0x17a(%rbp), %rdi
callq 0x2130
leaq -0x179(%rbp), %rdi
callq 0x2130
testb $0x1, -0x17c(%rbp)
jne 0x2955
jmp 0x29a2
movq -0x178(%rbp), %rax
leaq -0x170(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x4b0(%rbp)
je 0x29a0
movq -0x4b0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x20b0
movq -0x4b8(%rbp), %rax
leaq -0x170(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x4b0(%rbp)
jne 0x296f
jmp 0x29a2
jmp 0x30a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x309c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x3360
jmp 0x3090
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3090
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
leaq -0x190(%rbp), %rsi
callq 0x3330
movq -0x4c8(%rbp), %rsi
movq 0x125ba(%rip), %rdi     # 0x14fc8
callq 0x3290
movq %rax, -0x4c0(%rbp)
jmp 0x2a1c
movq -0x4c0(%rbp), %rdi
movq 0x12586(%rip), %rsi     # 0x14fb0
callq 0x2120
jmp 0x2a31
leaq -0x1f8(%rbp), %rdi
callq 0x3360
movups 0xa64c(%rip), %xmm0     # 0xd090
movaps %xmm0, -0x230(%rbp)
movups 0xa62e(%rip), %xmm0     # 0xd080
movaps %xmm0, -0x240(%rbp)
movups 0xa610(%rip), %xmm0     # 0xd070
movaps %xmm0, -0x250(%rbp)
movups 0xa5f2(%rip), %xmm0     # 0xd060
movaps %xmm0, -0x260(%rbp)
movups 0xa5d4(%rip), %xmm0     # 0xd050
movaps %xmm0, -0x270(%rbp)
leaq -0x270(%rbp), %rax
movq %rax, -0x220(%rbp)
movq $0xa, -0x218(%rbp)
leaq -0x271(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x34e0
movq -0x4d0(%rbp), %rcx
movq -0x220(%rbp), %rsi
movq -0x218(%rbp), %rdx
leaq -0x210(%rbp), %rdi
callq 0x3500
jmp 0x2ad2
leaq -0x271(%rbp), %rdi
callq 0x3580
leaq -0x210(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x35a0
movq -0x4d8(%rbp), %rdi
movq %rax, -0x290(%rbp)
callq 0x35d0
movq %rax, -0x298(%rbp)
movq -0x290(%rbp), %rsi
movq -0x298(%rbp), %rdx
leaq -0x288(%rbp), %rdi
callq 0x3600
jmp 0x2b27
movaps 0xa582(%rip), %xmm0     # 0xd0b0
movaps %xmm0, -0x2b0(%rbp)
movaps 0xa564(%rip), %xmm0     # 0xd0a0
movaps %xmm0, -0x2c0(%rbp)
movabsq $0x900000008, %rax      # imm = 0x900000008
movq %rax, -0x2a0(%rbp)
leaq -0x2c0(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x3630
movq -0x4e8(%rbp), %rdi
movq %rax, -0x4e0(%rbp)
callq 0x3640
movq -0x4e0(%rbp), %rsi
movq %rax, %rdx
leaq -0x2d0(%rbp), %rdi
callq 0x3660
jmp 0x2b92
movl $0x0, -0x2ec(%rbp)
leaq -0x2ed(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x3140
movq -0x4f0(%rbp), %rcx
leaq -0x2e8(%rbp), %rdi
movl $0xa, %esi
leaq -0x2ec(%rbp), %rdx
callq 0x3690
jmp 0x2bd0
leaq -0x2ed(%rbp), %rdi
callq 0x31e0
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x3730
movq -0x4f8(%rbp), %rdi
movq %rax, -0x308(%rbp)
callq 0x3760
movq %rax, -0x310(%rbp)
movq -0x308(%rbp), %rsi
movq -0x310(%rbp), %rdx
leaq -0x300(%rbp), %rdi
callq 0x3790
jmp 0x2c25
leaq -0x320(%rbp), %rdi
movq %rdi, -0x508(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x3330
movq -0x508(%rbp), %rsi
movq 0x1237b(%rip), %rdi     # 0x14fc8
callq 0x3290
movq %rax, -0x500(%rbp)
jmp 0x2c5b
movq -0x500(%rbp), %rdi
leaq 0xa45f(%rip), %rsi      # 0xd0c8
callq 0x20f0
movq %rax, -0x510(%rbp)
jmp 0x2c77
leaq -0x330(%rbp), %rdi
movq %rdi, -0x520(%rbp)
leaq -0x300(%rbp), %rsi
callq 0x3330
movq -0x510(%rbp), %rdi
movq -0x520(%rbp), %rsi
callq 0x3290
movq %rax, -0x518(%rbp)
jmp 0x2cad
movq -0x518(%rbp), %rdi
movq 0x122f5(%rip), %rsi     # 0x14fb0
callq 0x2120
jmp 0x2cc2
leaq -0x330(%rbp), %rdi
callq 0x3360
leaq -0x320(%rbp), %rdi
callq 0x3360
leaq -0x288(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x37c0
jmp 0x2cef
leaq -0x340(%rbp), %rdi
movq %rdi, -0x530(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x3330
movq -0x530(%rbp), %rsi
movq 0x122b1(%rip), %rdi     # 0x14fc8
callq 0x3290
movq %rax, -0x528(%rbp)
jmp 0x2d25
movq -0x528(%rbp), %rdi
leaq 0xa395(%rip), %rsi      # 0xd0c8
callq 0x20f0
movq %rax, -0x538(%rbp)
jmp 0x2d41
leaq -0x350(%rbp), %rdi
movq %rdi, -0x548(%rbp)
leaq -0x300(%rbp), %rsi
callq 0x3330
movq -0x538(%rbp), %rdi
movq -0x548(%rbp), %rsi
callq 0x3290
movq %rax, -0x540(%rbp)
jmp 0x2d77
movq -0x540(%rbp), %rdi
movq 0x1222b(%rip), %rsi     # 0x14fb0
callq 0x2120
jmp 0x2d8c
leaq -0x350(%rbp), %rdi
callq 0x3360
leaq -0x340(%rbp), %rdi
callq 0x3360
movups 0x11e7d(%rip), %xmm0    # 0x14c28
movaps %xmm0, -0x390(%rbp)
movups 0x11e5f(%rip), %xmm0    # 0x14c18
movaps %xmm0, -0x3a0(%rbp)
leaq -0x3a0(%rbp), %rax
movq %rax, -0x378(%rbp)
movq $0x4, -0x370(%rbp)
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x37f0
movq -0x550(%rbp), %rcx
movq -0x378(%rbp), %rsi
movq -0x370(%rbp), %rdx
leaq -0x368(%rbp), %rdi
callq 0x3810
jmp 0x2e0f
leaq -0x3a1(%rbp), %rdi
callq 0x38c0
leaq -0x368(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x38e0
movq -0x558(%rbp), %rdi
movq %rax, -0x3c0(%rbp)
callq 0x3910
movq %rax, -0x3c8(%rbp)
movq -0x3c0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
leaq -0x3b8(%rbp), %rdi
callq 0x3940
jmp 0x2e64
movl $0x0, -0x4(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x3970
leaq -0x368(%rbp), %rdi
callq 0x3990
leaq -0x300(%rbp), %rdi
callq 0x3360
leaq -0x2e8(%rbp), %rdi
callq 0x39b0
leaq -0x2d0(%rbp), %rdi
callq 0x3360
leaq -0x288(%rbp), %rdi
callq 0x3360
leaq -0x210(%rbp), %rdi
callq 0x39d0
leaq -0x190(%rbp), %rdi
callq 0x3360
leaq -0x100(%rbp), %rdi
callq 0x3970
leaq -0xf0(%rbp), %rdi
callq 0x3a30
leaq -0xe0(%rbp), %rdi
callq 0x3970
leaq -0x90(%rbp), %rdi
callq 0x3360
leaq -0x78(%rbp), %rdi
callq 0x3a50
leaq -0x28(%rbp), %rdi
callq 0x3360
leaq -0x18(%rbp), %rdi
callq 0x3360
movl -0x4(%rbp), %eax
addq $0x560, %rsp            # imm = 0x560
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x3360
jmp 0x3090
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x271(%rbp), %rdi
callq 0x3580
jmp 0x3090
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3084
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3078
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2ed(%rbp), %rdi
callq 0x31e0
jmp 0x306c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3060
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x2fd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x3360
leaq -0x320(%rbp), %rdi
callq 0x3360
jmp 0x3054
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3054
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3014
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x3360
leaq -0x340(%rbp), %rdi
callq 0x3360
jmp 0x3054
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3a1(%rbp), %rdi
callq 0x38c0
jmp 0x3054
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x3990
leaq -0x300(%rbp), %rdi
callq 0x3360
leaq -0x2e8(%rbp), %rdi
callq 0x39b0
leaq -0x2d0(%rbp), %rdi
callq 0x3360
leaq -0x288(%rbp), %rdi
callq 0x3360
leaq -0x210(%rbp), %rdi
callq 0x39d0
leaq -0x190(%rbp), %rdi
callq 0x3360
leaq -0x100(%rbp), %rdi
callq 0x3970
leaq -0xf0(%rbp), %rdi
callq 0x3a30
leaq -0xe0(%rbp), %rdi
callq 0x3970
leaq -0x90(%rbp), %rdi
callq 0x3360
leaq -0x78(%rbp), %rdi
callq 0x3a50
leaq -0x28(%rbp), %rdi
callq 0x3360
leaq -0x18(%rbp), %rdi
callq 0x3360
movq -0x58(%rbp), %rdi
callq 0x21d0