// File: /workspace/github_cpp_makefile_star2_O3/cannam[P]mini-cpp-convnet/flower.cpp
// Function: classify(std::vector<std::vector<std::vector<float, std::allocator<float>>, std::allocator<std::vector<float, std::allocator<float>>>>, std::allocator<std::vector<std::vector<float, std::allocator<float>>, std::allocator<std::vector<float, std::allocator<float>>>>>> const&)
vector<float>
classify(const vector<vector<vector<float>>> &image)
{
    vector<vector<vector<float>>> t;

    t = zeroPad(image, 1, 1);
    t = convolve(t, weights_firstConv, biases_firstConv);
    t = activation(t, "relu");
    t = maxPool(t, 2, 2);

    t = zeroPad(t, 1, 1);
    t = convolve(t, weights_secondConv, biases_secondConv);
    t = activation(t, "relu");
    t = maxPool(t, 2, 2);

    t = zeroPad(t, 1, 1);
    t = convolve(t, weights_thirdConv, biases_thirdConv);
    t = activation(t, "relu");
    t = maxPool(t, 2, 2);

    t = zeroPad(t, 1, 1);
    t = convolve(t, weights_fourthConv, biases_fourthConv);
    t = activation(t, "relu");
    t = maxPool(t, 2, 2);

    vector<float> flat = flatten(t);
    
    flat = dense(flat, weights_firstDense, biases_firstDense);
    flat = activation(flat, "relu");

    flat = dense(flat, weights_labeller, biases_labeller);
    flat = activation(flat, "softmax");

    return flat;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x120, %rsp            # imm = 0x120
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x40(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
callq 0x1c5c4
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x94153(%rip), %rdx     # 0xb11a0
leaq 0x94164(%rip), %rcx     # 0xb11b8
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x1bdec
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
leaq 0x110(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x30b9(%rip), %rsi      # 0x20174
leaq 0x30b6(%rip), %rdx      # 0x20178
leaq 0x100(%rsp), %rdi
callq 0x1ef00
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
leaq 0x100(%rsp), %rdx
callq 0x1cb97
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d148
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c31b
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x40(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x1c5c4
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x93fc3(%rip), %rdx     # 0xb11d0
leaq 0x93fd4(%rip), %rcx     # 0xb11e8
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x1bdec
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
leaq 0xf0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2ef9(%rip), %rsi      # 0x20174
leaq 0x2ef6(%rip), %rdx      # 0x20178
leaq 0xe0(%rsp), %rdi
callq 0x1ef00
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
leaq 0xe0(%rsp), %rdx
callq 0x1cb97
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
movq 0xe0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d308
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c31b
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x40(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x1c5c4
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x93e33(%rip), %rdx     # 0xb1200
leaq 0x93e44(%rip), %rcx     # 0xb1218
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x1bdec
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
leaq 0xd0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2d39(%rip), %rsi      # 0x20174
leaq 0x2d36(%rip), %rdx      # 0x20178
leaq 0xc0(%rsp), %rdi
callq 0x1ef00
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
leaq 0xc0(%rsp), %rdx
callq 0x1cb97
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
movq 0xc0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d4c8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c31b
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x40(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x1c5c4
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
leaq 0x93ca3(%rip), %rdx     # 0xb1230
leaq 0x93cb4(%rip), %rcx     # 0xb1248
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x1bdec
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
leaq 0xb0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2b79(%rip), %rsi      # 0x20174
leaq 0x2b76(%rip), %rdx      # 0x20178
leaq 0xa0(%rsp), %rdi
callq 0x1ef00
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
leaq 0xa0(%rsp), %rdx
callq 0x1cb97
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rsp), %xmm1
movaps %xmm0, (%rsp)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1e7c4
movq %r14, %rdi
callq 0x1e7c4
movq 0xa0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d688
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c31b
movq %rsp, %r14
movq 0x10(%r14), %rax
leaq 0x40(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%r14), %xmm1
movaps %xmm0, (%r14)
leaq 0x20(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1e7c4
movq %r15, %rdi
callq 0x1e7c4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1c7f4
leaq 0x93b67(%rip), %rdx     # 0xb1260
leaq 0x93b78(%rip), %rcx     # 0xb1278
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
callq 0x1c959
movq (%rbx), %rdi
movq 0x10(%rbx), %rsi
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
testq %rdi, %rdi
je 0x1d75a
subq %rdi, %rsi
callq 0x21e0
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1d75a
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0x90(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2a07(%rip), %rsi      # 0x20174
leaq 0x2a04(%rip), %rdx      # 0x20178
leaq 0x80(%rsp), %rdi
callq 0x1ef00
leaq 0x20(%rsp), %rdi
leaq 0x80(%rsp), %rdx
movq %rbx, %rsi
callq 0x1cd85
movq (%rbx), %rdi
movq 0x10(%rbx), %rsi
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
testq %rdi, %rdi
je 0x1d7e3
subq %rdi, %rsi
callq 0x21e0
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1d7e3
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d800
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x93a89(%rip), %rdx     # 0xb1290
leaq 0x93a9a(%rip), %rcx     # 0xb12a8
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
callq 0x1c959
movq (%rbx), %rdi
movq 0x10(%rbx), %rsi
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
testq %rdi, %rdi
je 0x1d868
subq %rdi, %rsi
callq 0x21e0
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1d868
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0x70(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x291f(%rip), %rsi      # 0x20197
leaq 0x291f(%rip), %rdx      # 0x2019e
leaq 0x60(%rsp), %rdi
callq 0x1ef00
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rdx
movq %rbx, %rsi
callq 0x1cd85
movq (%rbx), %rdi
movq 0x10(%rbx), %rsi
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
testq %rdi, %rdi
je 0x1d8e8
subq %rdi, %rsi
callq 0x21e0
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1d8e8
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d8ff
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq %rsp, %rdi
callq 0x1e7c4
movq %rbx, %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r14
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d956
movq 0x70(%rsp), %rsi
jmp 0x1d947
jmp 0x1d953
jmp 0x1d953
movq %rax, %r14
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d956
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x1d956
jmp 0x1d953
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x1da07
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
jmp 0x1d9f9
jmp 0x1da04
jmp 0x1da04
movq %rax, %r14
movq 0xa0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1da07
movq 0xb0(%rsp), %rsi
jmp 0x1d9f6
jmp 0x1da04
jmp 0x1da04
jmp 0x1da04
jmp 0x1da04
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1da07
movq 0xd0(%rsp), %rsi
jmp 0x1d9f6
jmp 0x1da04
jmp 0x1da04
jmp 0x1da04
jmp 0x1da04
movq %rax, %r14
movq 0xe0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1da07
movq 0xf0(%rsp), %rsi
jmp 0x1d9f6
jmp 0x1da04
jmp 0x1da04
jmp 0x1da04
jmp 0x1da04
movq %rax, %r14
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x1da07
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x1da07
jmp 0x1da04
jmp 0x1da04
movq %rax, %r14
movq %rsp, %rdi
callq 0x1e7c4
movq %r14, %rdi
callq 0x22d0