// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
movaps 0x3c7d(%rip), %xmm0     # 0x6280
leaq -0x50(%rbp), %r12
movaps %xmm0, (%r12)
movl $0x80, %edi
callq 0x2160
movq %rax, %r15
subq $0x8, %rsp
pushq $0x3
popq %rsi
pushq $0x2
popq %rdx
pushq $0xc
popq %r8
pushq $0x1
popq %r14
movq %rax, %rdi
movl %r14d, %ecx
movl %r14d, %r9d
pushq $0x0
pushq $0x1
pushq %r12
callq 0x3728
addq $0x20, %rsp
movq %r15, (%rbx)
movups 0x30(%r15), %xmm0
leaq -0x30(%rbp), %r12
movaps %xmm0, (%r12)
movl $0x80, %edi
callq 0x2160
movq %rax, %r15
subq $0x8, %rsp
pushq $0x5
popq %rsi
pushq $0xc
popq %r8
pushq $0x2
popq %rcx
movq %rax, %rdi
movl %r14d, %edx
movl %ecx, %r9d
pushq %r14
pushq %r14
pushq %r12
callq 0x3728
addq $0x20, %rsp
movq %r15, 0x8(%rbx)
movups 0x30(%r15), %xmm0
leaq -0x30(%rbp), %r14
movaps %xmm0, (%r14)
pushq $0x48
popq %rdi
callq 0x2160
movq %rax, %r15
leaq 0x399e(%rip), %rsi      # 0x6048
movq %rax, %rdi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x3b34
movq %r15, 0x30(%rbx)
movups 0x18(%r15), %xmm0
movaps %xmm0, -0x40(%rbp)
movl $0x80, %edi
callq 0x2160
movq %rax, %r15
subq $0x20, %rsp
movq %r14, (%rsp)
andl $0x0, 0x10(%rsp)
movl $0x1, 0x8(%rsp)
pushq $0x6
popq %r8
pushq $0x1
popq %rdx
movq %rax, %rdi
movl %edx, %esi
xorl %ecx, %ecx
movl %edx, %r9d
callq 0x3728
addq $0x20, %rsp
movq %r15, 0x10(%rbx)
movups 0x30(%r15), %xmm0
leaq -0x30(%rbp), %r15
movaps %xmm0, (%r15)
pushq $0x60
popq %rdi
callq 0x2160
movq %rax, %r14
leaq -0x40(%rbp), %rsi
movq %rax, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x2c1c
movq %r14, 0x38(%rbx)
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x2f7e
movq 0x38(%rbx), %rax
movups 0x18(%rax), %xmm0
movaps %xmm0, (%r15)
pushq $0x58
popq %rdi
callq 0x2160
movq %rax, %r14
leaq 0x38ed(%rip), %rsi      # 0x604c
pushq $0x7
popq %rcx
movq %rax, %rdi
movl %ecx, %edx
xorl %r8d, %r8d
movq %r15, %r9
callq 0x3f1c
movq %r14, 0x28(%rbx)
movups 0x20(%r14), %xmm0
movaps %xmm0, (%r15)
pushq $0x30
popq %rdi
callq 0x2160
movq %rax, %r14
pushq $0x64
popq %rsi
pushq $0x1
popq %rcx
movq %rax, %rdi
movq %r15, %rdx
xorl %r8d, %r8d
movl %ecx, %r9d
callq 0x3d08
movq %r14, 0x18(%rbx)
movq 0xc(%r14), %rax
movq %rax, (%r15)
pushq $0x30
popq %rdi
callq 0x2160
movq %rax, %r14
pushq $0xa
popq %rsi
pushq $0x1
popq %r8
movq %rax, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
xorl %r9d, %r9d
callq 0x3d08
movq %r14, 0x20(%rbx)
movq (%rbx), %rdi
leaq 0x3874(%rip), %rsi      # 0x6050
callq 0x3a9a
movq 0x8(%rbx), %rdi
leaq 0x388c(%rip), %rsi      # 0x6078
callq 0x3a9a
movq 0x8(%rbx), %rdi
leaq 0x38a4(%rip), %rsi      # 0x60a0
callq 0x3ada
movq 0x10(%rbx), %rdi
leaq 0x38ba(%rip), %rsi      # 0x60c6
callq 0x3a9a
movq 0x18(%rbx), %rdi
leaq 0x38d2(%rip), %rsi      # 0x60ee
callq 0x3eb0
movq 0x20(%rbx), %rdi
leaq 0x38e8(%rip), %rsi      # 0x6114
callq 0x3eb0
movq 0x20(%rbx), %rdi
leaq 0x38fe(%rip), %rsi      # 0x613a
callq 0x3eea
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2850
movq %rax, %rbx
pushq $0x30
jmp 0x2863
movq %rax, %rbx
pushq $0x58
jmp 0x2863
movq %rax, %rbx
pushq $0x60
popq %rsi
movq %r14, %rdi
jmp 0x2880
jmp 0x2875
movq %rax, %rbx
pushq $0x48
popq %rsi
jmp 0x287d
jmp 0x2875
movq %rax, %rbx
movl $0x80, %esi
movq %r15, %rdi
callq 0x2170
movq %rbx, %rdi
callq 0x22b0
nop