// File: /workspace/github_cpp_makefile_star2_O1/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 $0x110, %rsp            # imm = 0x110
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x18(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
callq 0x1cbc1
leaq 0x30(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x94ad2(%rip), %rdx     # 0xb21a0
leaq 0x94ae3(%rip), %rcx     # 0xb21b8
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1c3cc
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
leaq 0x100(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x3a0a(%rip), %rsi      # 0x2114c
leaq 0x3a07(%rip), %rdx      # 0x21150
leaq 0xf0(%rsp), %rdi
callq 0x1f404
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
leaq 0xf0(%rsp), %rdx
callq 0x1d230
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
movq 0xf0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d7d5
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c8fb
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x18(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x1cbc1
leaq 0x30(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x9492a(%rip), %rdx     # 0xb21d0
leaq 0x9493b(%rip), %rcx     # 0xb21e8
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1c3cc
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
leaq 0xe0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x3832(%rip), %rsi      # 0x2114c
leaq 0x382f(%rip), %rdx      # 0x21150
leaq 0xd0(%rsp), %rdi
callq 0x1f404
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
leaq 0xd0(%rsp), %rdx
callq 0x1d230
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
movq 0xd0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1d9ad
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c8fb
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x18(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x1cbc1
leaq 0x30(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x94782(%rip), %rdx     # 0xb2200
leaq 0x94793(%rip), %rcx     # 0xb2218
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1c3cc
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
leaq 0xc0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x365a(%rip), %rsi      # 0x2114c
leaq 0x3657(%rip), %rdx      # 0x21150
leaq 0xb0(%rsp), %rdi
callq 0x1f404
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
leaq 0xb0(%rsp), %rdx
callq 0x1d230
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
movq 0xb0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1db85
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c8fb
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x18(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x1cbc1
leaq 0x30(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
leaq 0x945da(%rip), %rdx     # 0xb2230
leaq 0x945eb(%rip), %rcx     # 0xb2248
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1c3cc
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
leaq 0xa0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x3482(%rip), %rsi      # 0x2114c
leaq 0x347f(%rip), %rdx      # 0x21150
leaq 0x90(%rsp), %rdi
callq 0x1f404
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
leaq 0x90(%rsp), %rdx
callq 0x1d230
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x18(%rsp), %r14
movups (%r14), %xmm1
movaps %xmm1, (%rsp)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x1ecd4
movq %r14, %rdi
callq 0x1ecd4
movq 0x90(%rsp), %rdi
cmpq %r15, %rdi
je 0x1dd5d
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x18(%rsp), %rdi
movq %rsp, %rsi
movl $0x2, %edx
movl $0x2, %ecx
callq 0x1c8fb
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movq %rsp, %r14
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
leaq 0x18(%rsp), %r15
movups (%r15), %xmm1
movaps %xmm1, (%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%r14)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%r15)
movq $0x0, 0x10(%r15)
callq 0x1ecd4
movq %r15, %rdi
callq 0x1ecd4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1ce2a
leaq 0x9448c(%rip), %rdx     # 0xb2260
leaq 0x9449d(%rip), %rcx     # 0xb2278
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x1cfbd
leaq 0x30(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1f494
movq (%r14), %rdi
testq %rdi, %rdi
je 0x1de0d
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0x80(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x332c(%rip), %rsi      # 0x2114c
leaq 0x3329(%rip), %rdx      # 0x21150
leaq 0x70(%rsp), %rdi
callq 0x1f404
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %rdx
movq %rbx, %rsi
callq 0x1d409
leaq 0x30(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1f494
movq (%r14), %rdi
testq %rdi, %rdi
je 0x1de68
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x1de82
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x94407(%rip), %rdx     # 0xb2290
leaq 0x94418(%rip), %rcx     # 0xb22a8
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x1cfbd
leaq 0x30(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1f494
movq (%r14), %rdi
testq %rdi, %rdi
je 0x1dec2
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0x60(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x329d(%rip), %rsi      # 0x2116f
leaq 0x329d(%rip), %rdx      # 0x21176
leaq 0x50(%rsp), %rdi
callq 0x1f404
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
movq %rbx, %rsi
callq 0x1d409
leaq 0x30(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1f494
movq (%r14), %rdi
testq %rdi, %rdi
je 0x1df1a
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x50(%rsp), %rdi
cmpq %r15, %rdi
je 0x1df31
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x21e0
movq %rsp, %rdi
callq 0x1ecd4
movq %rbx, %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r14
movq 0x50(%rsp), %rdi
cmpq %r15, %rdi
je 0x1df85
movq 0x60(%rsp), %rsi
jmp 0x1df76
jmp 0x1df82
jmp 0x1df82
movq %rax, %r14
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x1df85
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x1df85
jmp 0x1df82
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x1e036
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
jmp 0x1e028
jmp 0x1e033
jmp 0x1e033
movq %rax, %r14
movq 0x90(%rsp), %rdi
cmpq %r15, %rdi
je 0x1e036
movq 0xa0(%rsp), %rsi
jmp 0x1e025
jmp 0x1e033
jmp 0x1e033
jmp 0x1e033
jmp 0x1e033
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1e036
movq 0xc0(%rsp), %rsi
jmp 0x1e025
jmp 0x1e033
jmp 0x1e033
jmp 0x1e033
jmp 0x1e033
movq %rax, %r14
movq 0xd0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1e036
movq 0xe0(%rsp), %rsi
jmp 0x1e025
jmp 0x1e033
jmp 0x1e033
jmp 0x1e033
jmp 0x1e033
movq %rax, %r14
movq 0xf0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1e036
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x1e036
jmp 0x1e033
jmp 0x1e033
movq %rax, %r14
movq %rsp, %rdi
callq 0x1ecd4
movq %r14, %rdi
callq 0x22d0