// File: hey-yahei[P]ConvNet/tests/test_mymodel.cpp
// Function: Model::Model()
Model() {
		int in_shape[] = { 1,3,224,224 };
		int shape[4], shape_[4];

		conv1 = new Convolution(3, 2, 1, 12, 1, in_shape, true, false);
		conv1->GetOutputShape(shape);
		conv2 = new Convolution(5, 1, 2, 12, 2, shape, true, true);
		conv2->GetOutputShape(shape);
		elt = new Eltwise("add", shape, false);
		elt->GetOutputShape(shape_);
		conv3 = new Convolution(1, 1, 0, 6, 1, shape, true, false);
		conv3->GetOutputShape(shape);
		cat = new Concat(shape_, shape, nullptr);
		cat->SetKeepOrNot(false, false);
		cat->GetOutputShape(shape);
		pool = new Pooling("max", 7, 7, 0, shape);
		pool->GetOutputShape(shape);
		fc1 = new FullyConnection(100, shape, true, false, true);
		fc1->GetOutputShape(shape);
		fc2 = new FullyConnection(10, shape, false, true, false);

		conv1->LoadWeightFromFile("../models/my_testmodel/conv1.weight.dat");
		conv2->LoadWeightFromFile("../models/my_testmodel/conv2.weight.dat");
		conv2->LoadBiasFromFile("../models/my_testmodel/conv2.bias.dat");
		conv3->LoadWeightFromFile("../models/my_testmodel/conv3.weight.dat");
		fc1->LoadWeightFromFile("../models/my_testmodel/fc1.weight.dat");
		fc2->LoadWeightFromFile("../models/my_testmodel/fc2.weight.dat");
		fc2->LoadBiasFromFile("../models/my_testmodel/fc2.bias.dat");
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movaps 0x9ae2(%rip), %xmm0     # 0xc280
movaps %xmm0, -0x20(%rbp)
movl $0x80, %edi
callq 0x21e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq %rsp, %rax
leaq -0x20(%rbp), %rcx
movq %rcx, (%rax)
movl $0x0, 0x10(%rax)
movl $0x1, 0x8(%rax)
movl $0x3, %esi
movl $0x2, %edx
movl $0xc, %r8d
movl $0x1, %r9d
movl %r9d, %ecx
callq 0x6540
jmp 0x27ee
movq -0x60(%rbp), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movq (%rax), %rdi
leaq -0x30(%rbp), %rsi
movq %rsi, -0x70(%rbp)
callq 0x2f90
movl $0x80, %edi
callq 0x21e0
movq -0x70(%rbp), %rcx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x68(%rbp)
movq %rsp, %rax
movq %rcx, (%rax)
movl $0x1, 0x10(%rax)
movl $0x1, 0x8(%rax)
movl $0x5, %esi
movl $0x1, %edx
movl $0xc, %r8d
movl $0x2, %r9d
movl %r9d, %ecx
callq 0x6540
jmp 0x2855
movq -0x60(%rbp), %rax
movq -0x68(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rax), %rdi
leaq -0x30(%rbp), %rsi
movq %rsi, -0x80(%rbp)
callq 0x2f90
movl $0x48, %edi
callq 0x21e0
movq -0x80(%rbp), %rdx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x78(%rbp)
leaq 0x97b7(%rip), %rsi      # 0xc048
xorl %ecx, %ecx
callq 0x6c20
jmp 0x289a
movq -0x60(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, 0x30(%rax)
movq 0x30(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2fc0
movl $0x80, %edi
callq 0x21e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x88(%rbp)
movq %rsp, %rax
leaq -0x30(%rbp), %rcx
movq %rcx, (%rax)
movl $0x0, 0x10(%rax)
movl $0x1, 0x8(%rax)
xorl %ecx, %ecx
movl $0x6, %r8d
movl $0x1, %r9d
movl %r9d, %esi
movl %r9d, %edx
callq 0x6540
jmp 0x28fd
movq -0x60(%rbp), %rax
movq -0x88(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rax), %rdi
leaq -0x30(%rbp), %rsi
movq %rsi, -0x98(%rbp)
callq 0x2f90
movl $0x60, %edi
callq 0x21e0
movq -0x98(%rbp), %rdx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x90(%rbp)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x40(%rbp), %rsi
callq 0x38b0
jmp 0x294d
movq -0x60(%rbp), %rax
movq -0x90(%rbp), %rcx
movq %rcx, 0x38(%rax)
movq 0x38(%rax), %rdi
xorl %edx, %edx
movl %edx, -0xac(%rbp)
movb %dl, %al
movl %edx, %esi
callq 0x3e10
movq -0x60(%rbp), %rax
movq 0x38(%rax), %rdi
leaq -0x30(%rbp), %rsi
movq %rsi, -0xa8(%rbp)
callq 0x2ff0
movl $0x58, %edi
callq 0x21e0
movl -0xac(%rbp), %r8d
movq -0xa8(%rbp), %r9
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xa0(%rbp)
leaq 0x9697(%rip), %rsi      # 0xc04c
movl $0x7, %ecx
movl %ecx, %edx
callq 0x7340
jmp 0x29c3
movq -0x60(%rbp), %rax
movq -0xa0(%rbp), %rcx
movq %rcx, 0x28(%rax)
movq 0x28(%rax), %rdi
leaq -0x30(%rbp), %rsi
movq %rsi, -0xc0(%rbp)
callq 0x3020
movl $0x30, %edi
callq 0x21e0
movq -0xc0(%rbp), %rdx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xb8(%rbp)
movl $0x64, %esi
xorl %r8d, %r8d
movl $0x1, %r9d
movl %r9d, %ecx
callq 0x6fa0
jmp 0x2a1c
movq -0x60(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq 0x18(%rax), %rdi
leaq -0x30(%rbp), %rsi
movq %rsi, -0xd0(%rbp)
callq 0x3050
movl $0x30, %edi
callq 0x21e0
movq -0xd0(%rbp), %rdx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xc8(%rbp)
movl $0xa, %esi
movl $0x1, %r8d
xorl %r9d, %r9d
movl %r9d, %ecx
callq 0x6fa0
jmp 0x2a75
movq -0x60(%rbp), %rax
movq -0xc8(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq (%rax), %rdi
leaq 0x95c2(%rip), %rsi      # 0xc050
callq 0x6a40
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x95d6(%rip), %rsi      # 0xc078
callq 0x6a40
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x95ea(%rip), %rsi      # 0xc0a0
callq 0x6ac0
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rdi
leaq 0x95fc(%rip), %rsi      # 0xc0c6
callq 0x6a40
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x9610(%rip), %rsi      # 0xc0ee
callq 0x7250
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rdi
leaq 0x9622(%rip), %rsi      # 0xc114
callq 0x7250
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rdi
leaq 0x9634(%rip), %rsi      # 0xc13a
callq 0x72d0
addq $0xf0, %rsp
popq %rbp
retq
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x80, %esi
callq 0x21f0
jmp 0x2c0a
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x80, %esi
callq 0x21f0
jmp 0x2c0a
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x48, %esi
callq 0x21f0
jmp 0x2c0a
movq -0x88(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x80, %esi
callq 0x21f0
jmp 0x2c0a
movq -0x90(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x60, %esi
callq 0x21f0
jmp 0x2c0a
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x58, %esi
callq 0x21f0
jmp 0x2c0a
movq -0xb8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x30, %esi
callq 0x21f0
jmp 0x2c0a
movq -0xc8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x30, %esi
callq 0x21f0
movq -0x48(%rbp), %rdi
callq 0x2370
nopw %cs:(%rax,%rax)
nopl (%rax)