#include "ops-builder.hh"
#include <stdexcept>


#include "graph.hh"
#include "add.hh"
#include "adam-update.hh"
#include "argmax-accuracy.hh"
#include "input.hh"
#include "leaky-relu-grad.hh"
#include "log-softmax.hh"
#include "mat-mat-mul.hh"
#include "mat-mul-add.hh"
#include "mat-rvect-add.hh"
#include "mat-sum.hh"
#include "moment-update.hh"
#include "mse.hh"
#include "mse-grad.hh"
#include "relu-grad.hh"
#include "seq.hh"
#include "sigmoid-cross-entropy.hh"
#include "sigmoid-cross-entropy-grad.hh"
#include "sigmoid-grad.hh"
#include "softmax.hh"
#include "softmax-cross-entropy.hh"
#include "softmax-cross-entropy-grad.hh"
#include "tanh-grad.hh"
#include "update.hh"
#include "variable.hh"
#include "vect-sigmoid.hh"
#include "conv2d.hh"
#include "conv2d-bias-add.hh"
#include "conv2d-input-grad.hh"
#include "conv2d-kernel-grad.hh"
#include "conv2d-bias-add-grad.hh"
#include "conv2d-transpose.hh"
#include "conv2d-transpose-input-grad.hh"
#include "conv2d-transpose-kernel-grad.hh"
#include "vect-relu.hh"
#include "vect-relu-leaky.hh"
#include "vect-tanh.hh"
#include "reshape.hh"


namespace ops
{

    OpsBuilder& OpsBuilder::instance()
    {
        static OpsBuilder builder;
        return builder;
    }

    OpsBuilder::OpsBuilder()
        : graph_(Graph::instance())
    {}


    Add* OpsBuilder::add(Op* left, Op* right)
    {
        if (left->shape_get() != right->shape_get())
            throw std::runtime_error {"add: left and right must have the same shape"};

        auto res = new Add(left, right);
        graph_.add(res);
        return res;
    }
    
    AdamUpdate* OpsBuilder::adam_update(Variable* var, Op* m, Op* v,
                                        dbl_t learning_rate,
                                        dbl_t beta1, dbl_t beta2, dbl_t eps)
    {
        if (var->shape_get() != m->shape_get())
            throw std::runtime_error {"var and m must have the same shape"};
        if (var->shape_get() != v->shape_get())
            throw std::runtime_error {"var and v must have the same shape"};

        auto res = new AdamUpdate(var, m, v, learning_rate, beta1, beta2, eps);
        graph_.add(res);
        return res;
    }

    ArgmaxAccuracy* OpsBuilder::argmax_accuracy(Op* y, Op* y_hat)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (y_hat->shape_get().ndims() != 2)
            throw std::runtime_error {"y_hat must be a matrix"};
        if (y->shape_get() != y_hat->shape_get())
            throw std::runtime_error {"y and y_hat must have the same shape"};

        auto res = new ArgmaxAccuracy(y, y_hat);
        graph_.add(res);
        return res;
    }

    Conv2D* OpsBuilder::conv2d(Op* input, Op* kernel, const int* strides)
    {
        if (input->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2D:input must be a 4D tensor"};
        if (kernel->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2D:kernel must be a 4D tensor"};
        auto res = new Conv2D(input, kernel, strides);
        graph_.add(res);
        return res;
    }

    Conv2DBiasAdd* OpsBuilder::conv2d_bias_add(Op* z, Op* bias)
    {
        if (z->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2DBiasAdd:z must be a 4D tensor"};
        if (bias->shape_get().ndims() != 1)
            throw std::runtime_error {"Conv2DBiasAdd:bias must be a 1D array"};
        if (z->shape_get()[3] != bias->shape_get()[0])
            throw std::runtime_error {"Conv2DBiasAdd:z and bias shape are not corresponding"};
        auto res = new Conv2DBiasAdd(z, bias);
        graph_.add(res);
        return res;
    }

    Conv2DBiasAddGrad* OpsBuilder::conv2d_bias_add_grad(Op* z)
    {
        if (z->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2DBiasAddGrad:z must be a 4D tensor"};
        auto res = new Conv2DBiasAddGrad(z);
        graph_.add(res);
        return res;
    }

    Conv2DInputGrad* OpsBuilder::conv2d_input_grad(Op* y, Op* kernel, const int* strides, const int* input_size)
    {
        auto res = new Conv2DInputGrad(y, kernel, strides, input_size);
        graph_.add(res);
        return res;
    }

    Conv2DKernelGrad* OpsBuilder::conv2d_kernel_grad(Op* y, Op* input, const int* strides, const int* kernel_size, const int* padded_size)
    {
        auto res = new Conv2DKernelGrad(y, input, strides, kernel_size, padded_size);
        graph_.add(res);
        return res;
    }

    Conv2DTranspose* OpsBuilder::conv2d_transpose(Op* input, Op* kernel, const int* out_size, const int* strides)
    {
        auto res = new Conv2DTranspose(input, kernel, out_size, strides);
        graph_.add(res);
        return res;
    }

    Conv2DTransposeInputGrad* OpsBuilder::conv2d_transpose_input_grad(Op* y, Op* kernel, const int* strides, const int* input_size)
    {
        auto res = new Conv2DTransposeInputGrad(y, kernel, strides, input_size);
        graph_.add(res);
        return res;
    }

    Conv2DTransposeKernelGrad* OpsBuilder::conv2d_transpose_kernel_grad(Op* y, Op* input, const int* strides, const int* kernel_size)
    {
        auto res = new Conv2DTransposeKernelGrad(y, input, strides, kernel_size);
        graph_.add(res);
        return res;
    }


    Input* OpsBuilder::input(const Shape& shape)
    {
        auto res = new Input(shape);
        graph_.add(res);
        return res;
    }

    LeakyReluGrad* OpsBuilder::leaky_relu_grad(Op* z, Op* dout, dbl_t alpha)
    {
        if (z->shape_get() != dout->shape_get())
            throw std::runtime_error {"LeakyReluGrad: z and dout must have the same shape"};

        auto res = new LeakyReluGrad(z, dout, alpha);
        graph_.add(res);
        return res;
    }

    LogSoftmax* OpsBuilder::log_softmax(Op* arg)
    {
        if (arg->shape_get().ndims() != 2)
            throw std::runtime_error{"log softmax input must be a matrix"};

        auto res = new LogSoftmax(arg);
        graph_.add(res);
        return res;
    }

    MatMatMul* OpsBuilder::mat_mat_mul(Op* left, Op* right, bool left_tr, bool right_tr)
    {
        if (left->shape_get().ndims() != 2)
            throw std::runtime_error{"left operand must be a matrix"};
        if (right->shape_get().ndims() != 2)
            throw std::runtime_error{"right operand must be a matrix"};
        if (left->shape_get()[!left_tr] != right->shape_get()[right_tr])
            throw std::runtime_error{"left[1] and right[0] differ"};

        auto res = new MatMatMul(left, right, left_tr, right_tr);
        graph_.add(res);
        return res;
    }

    MatMulAdd* OpsBuilder::mat_mul_add(Op* x, Op* w, Op* b)
    {
        if (x->shape_get().ndims() != 2)
            throw std::runtime_error{"x must be a matrix"};
        if (w->shape_get().ndims() != 2)
            throw std::runtime_error{"w must be a matrix"};
        if (b->shape_get().ndims() != 1)
            throw std::runtime_error{"b must be a vector"};
        if (x->shape_get()[1] != w->shape_get()[0])
            throw std::runtime_error{"x[1] and w[0] differ"};
        if (w->shape_get()[1] != b->shape_get()[0])
            throw std::runtime_error{"w[1] and b[0] differ"};

        auto res = new MatMulAdd(x, w, b);
        graph_.add(res);
        return res;
    }

    MatRvectAdd* OpsBuilder::mat_rvect_add(Op* left, Op* right)
    {
        if (left->shape_get().ndims() != 2)
            throw std::runtime_error{"left operand must be a matrix"};
        if (right->shape_get().ndims() != 1)
            throw std::runtime_error{"right operand must be a vector"};
        if (left->shape_get()[1] != right->shape_get()[0])
            throw std::runtime_error{"left[1] and right[0] differ"};

        auto res = new MatRvectAdd(left, right);
        graph_.add(res);
        return res;
    }

    MatSum* OpsBuilder::mat_sum(Op* arg, std::size_t axis)
    {
        if (arg->shape_get().ndims() != 2)
            throw std::runtime_error {"arg must be a matrix"};
        if (axis >= 2)
            throw std::runtime_error {"axis must be 0 or 1"};

        auto res = new MatSum(arg, axis);
        graph_.add(res);
        return res;
    }

    MomentUpdate* OpsBuilder::moment_update(Variable* var, Op* dt,
                                            dbl_t coeff1, dbl_t coeff2, bool sq_update)
    {
        if (var->shape_get() != dt->shape_get())
            throw std::runtime_error {"var and dt must have the same shape"};

        auto res = new MomentUpdate(var, dt, coeff1, coeff2, sq_update);
        graph_.add(res);
        return res;
    }

    MSE* OpsBuilder::mse(Op* y, Op* y_hat)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"MSE:y must be a matrix"};
        if (y_hat->shape_get().ndims() != 2)
            throw std::runtime_error {"MSE:y_hat must be a matrix"};
        if (y->shape_get() != y_hat->shape_get())
            throw std::runtime_error {"MSE: y and y_hat must have the same shape"};

        auto res = new MSE(y, y_hat);
        graph_.add(res);
        return res;
    }

    Reshape* OpsBuilder::reshape(Op* arg, const Shape& shape)
    {
      auto& arg_shape = arg->shape_get();
      if (shape.defined() && shape.total() != arg_shape.total())
          throw std::runtime_error {"Reshape:"};
      //    if (! shape.defined() && (arg_shape.total() % (- shape.total()) != 0))
      //    throw std::runtime_error {"Reshape:"};
      // nb -1 = max 1 ?? has to be checked
      auto res = new Reshape(arg, shape);
      graph_.add(res);
      return res;
    }

    MSEGrad* OpsBuilder::mse_grad(Op* y, Op* y_hat)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"MSEGrad: y must be a matrix"};
        if (y_hat->shape_get().ndims() != 2)
            throw std::runtime_error {"MSEGrad: y_hat must be a matrix"};
        if (y->shape_get() != y_hat->shape_get())
            throw std::runtime_error {"MSEGrad: y and y_hat must have the same shape"};

        auto res = new MSEGrad(y, y_hat);
        graph_.add(res);
        return res;
    }

    ReluGrad* OpsBuilder::relu_grad(Op* z, Op* dout)
    {
        if (z->shape_get() != dout->shape_get())
            throw std::runtime_error {"ReluGrad: z and dout must have the same shape"};

        auto res = new ReluGrad(z, dout);
        graph_.add(res);
        return res;
    }

    Seq* OpsBuilder::seq(const std::vector<Op*>& ops)
    {
        if (ops.empty())
            throw std::runtime_error {"seq: ops can't be empty"};
        auto res = new Seq(ops);
        graph_.add(res);
        return res;
    }

    SigmoidCrossEntropy* OpsBuilder::sigmoid_cross_entropy(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
            
        auto res = new SigmoidCrossEntropy(y, logits);
        graph_.add(res);
        return res;
    }

    SigmoidCrossEntropyGrad* OpsBuilder::sigmoid_cross_entropy_grad(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
        
        auto res = new SigmoidCrossEntropyGrad(y, logits);
        graph_.add(res);
        return res;
    }

    SigmoidGrad* OpsBuilder::sigmoid_grad(Op* sig_out, Op* dout)
    {
        if (sig_out->shape_get() != dout->shape_get())
            throw std::runtime_error {"SigmoidGrad: sig_out and dout must have the same shape"};

        auto res = new SigmoidGrad(sig_out, dout);
        graph_.add(res);
        return res;
    }
    
    Softmax* OpsBuilder::softmax(Op* arg)
    {
        if (arg->shape_get().ndims() != 2)
            throw std::runtime_error{"softmax input must be a matrix"};

        auto res = new Softmax(arg);
        graph_.add(res);
        return res;
    }

    SoftmaxCrossEntropy* OpsBuilder::softmax_cross_entropy(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
            
        auto res = new SoftmaxCrossEntropy(y, logits);
        graph_.add(res);
        return res;
    }

    SoftmaxCrossEntropyGrad* OpsBuilder::softmax_cross_entropy_grad(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
        
        auto res = new SoftmaxCrossEntropyGrad(y, logits);
        graph_.add(res);
        return res;
    }

    TanhGrad* OpsBuilder::tanh_grad(Op* tanh_out, Op* dout)
    {
        if (tanh_out->shape_get() != dout->shape_get())
            throw std::runtime_error {"TanhGrad: tanh_out and dout must have the same shape"};

        auto res = new TanhGrad(tanh_out, dout);
        graph_.add(res);
        return res;
    }

    Update* OpsBuilder::update(Variable* var, Op* dt, Op* coeff)
    {
        if (var->shape_get() != dt->shape_get())
            throw std::runtime_error {"var and dt must have the same shape"};
        if (coeff->shape_get().ndims())
            throw std::runtime_error {"coeff must be a scalar"};

        auto res = new Update(var, dt, coeff);
        graph_.add(res);
        return res;
    }

    Variable* OpsBuilder::variable(const Shape& shape, bool trainable)
    {
        if (!shape.defined())
            throw std::runtime_error{"shape not fully defined"};
        auto res = new Variable(shape, trainable);
        graph_.add_var(res);
        return res;
    }

    VectSigmoid* OpsBuilder::vect_sigmoid(Op* arg)
    {
        auto res = new VectSigmoid(arg);
        graph_.add(res);
        return res;
    }

    VectRelu* OpsBuilder::vect_relu(Op* arg)
    {
        auto res = new VectRelu(arg);
        graph_.add(res);
        return res;
    }

    VectReluLeaky* OpsBuilder::vect_relu_leaky(Op* arg, const dbl_t alpha)
    {
        auto res = new VectReluLeaky(arg, alpha);
        graph_.add(res);
        return res;
    }

    VectTanh* OpsBuilder::vect_tanh(Op* arg)
    {
        auto res = new VectTanh(arg);
        graph_.add(res);
        return res;
    }
}

	.file	"tmpxft_0025f903_00000000-6_ops-builder.cudafe1.cpp"
	.text
#APP
	.globl _ZSt21ios_base_library_initv

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB4610:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE4610:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.align 2
	.globl	_ZN3ops10OpsBuilderC2Ev
	.type	_ZN3ops10OpsBuilderC2Ev, @function
_ZN3ops10OpsBuilderC2Ev:
.LFB4569:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	call	_ZN3ops5Graph8instanceEv@PLT
	movq	%rax, (%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4569:
	.size	_ZN3ops10OpsBuilderC2Ev, .-_ZN3ops10OpsBuilderC2Ev
	.globl	_ZN3ops10OpsBuilderC1Ev
	.set	_ZN3ops10OpsBuilderC1Ev,_ZN3ops10OpsBuilderC2Ev
	.align 2
	.globl	_ZN3ops10OpsBuilder8instanceEv
	.type	_ZN3ops10OpsBuilder8instanceEv, @function
_ZN3ops10OpsBuilder8instanceEv:
.LFB4567:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4567
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	_ZZN3ops10OpsBuilder8instanceEvE7builder(%rip), %rbx
	pushq	%rcx
	.cfi_def_cfa_offset 32
	movb	_ZGVZN3ops10OpsBuilder8instanceEvE7builder(%rip), %al
	testb	%al, %al
	jne	.L12
	leaq	_ZGVZN3ops10OpsBuilder8instanceEvE7builder(%rip), %rbp
	movq	%rbp, %rdi
	call	__cxa_guard_acquire@PLT
	testl	%eax, %eax
	je	.L12
	movq	%rbx, %rdi
.LEHB0:
	call	_ZN3ops10OpsBuilderC1Ev
.LEHE0:
	movq	%rbp, %rdi
	call	__cxa_guard_release@PLT
	jmp	.L12
.L9:
	endbr64
	movq	%rax, %rbx
.L8:
	movq	%rbp, %rdi
	call	__cxa_guard_abort@PLT
	movq	%rbx, %rdi
.LEHB1:
	call	_Unwind_Resume@PLT
.LEHE1:
.L12:
	movq	%rbx, %rax
	popq	%rdx
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4567:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table,"a",@progbits
.LLSDA4567:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4567-.LLSDACSB4567
.LLSDACSB4567:
	.uleb128 .LEHB0-.LFB4567
	.uleb128 .LEHE0-.LEHB0
	.uleb128 .L9-.LFB4567
	.uleb128 0
	.uleb128 .LEHB1-.LFB4567
	.uleb128 .LEHE1-.LEHB1
	.uleb128 0
	.uleb128 0
.LLSDACSE4567:
	.text
	.size	_ZN3ops10OpsBuilder8instanceEv, .-_ZN3ops10OpsBuilder8instanceEv
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"add: left and right must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder3addEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder3addEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder3addEPNS_2OpES2_:
.LFB4571:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4571
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rdx, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB2:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE2:
	testb	%al, %al
	je	.L17
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC0(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB3:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE3:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB4:
	call	__cxa_throw@PLT
.L17:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE4:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB5:
	call	_ZN3ops3AddC1EPNS_2OpES2_@PLT
.LEHE5:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB6:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L20:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L18:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L25
.L21:
	endbr64
	movq	%rax, %rbp
.L19:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L25:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE6:
	.cfi_endproc
.LFE4571:
	.section	.gcc_except_table
.LLSDA4571:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4571-.LLSDACSB4571
.LLSDACSB4571:
	.uleb128 .LEHB2-.LFB4571
	.uleb128 .LEHE2-.LEHB2
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB3-.LFB4571
	.uleb128 .LEHE3-.LEHB3
	.uleb128 .L20-.LFB4571
	.uleb128 0
	.uleb128 .LEHB4-.LFB4571
	.uleb128 .LEHE4-.LEHB4
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB5-.LFB4571
	.uleb128 .LEHE5-.LEHB5
	.uleb128 .L21-.LFB4571
	.uleb128 0
	.uleb128 .LEHB6-.LFB4571
	.uleb128 .LEHE6-.LEHB6
	.uleb128 0
	.uleb128 0
.LLSDACSE4571:
	.text
	.size	_ZN3ops10OpsBuilder3addEPNS_2OpES2_, .-_ZN3ops10OpsBuilder3addEPNS_2OpES2_
	.section	.rodata.str1.1
.LC1:
	.string	"var and m must have the same shape"
.LC2:
	.string	"var and v must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff
	.type	_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff, @function
_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff:
.LFB4572:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4572
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movd	%xmm0, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rdi, %r14
	movq	%rdx, %rdi
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%rcx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movss	%xmm1, 4(%rsp)
	movss	%xmm2, 8(%rsp)
	movss	%xmm3, 12(%rsp)
.LEHB7:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE7:
	testb	%al, %al
	je	.L27
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC1(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB8:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE8:
	jmp	.L38
.L27:
	movq	%r13, %rdi
.LEHB9:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE9:
	testb	%al, %al
	je	.L28
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC2(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB10:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE10:
.L38:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB11:
	call	__cxa_throw@PLT
.L28:
	movl	$144, %edi
	call	_Znwm@PLT
.LEHE11:
	movd	%r15d, %xmm0
	movq	%r13, %rcx
	movq	%r12, %rdx
	movss	12(%rsp), %xmm3
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
	movss	8(%rsp), %xmm2
	movss	4(%rsp), %xmm1
.LEHB12:
	call	_ZN3ops10AdamUpdateC1EPNS_8VariableEPNS_2OpES4_ffff@PLT
.LEHE12:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
.LEHB13:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L32:
	.cfi_restore_state
	endbr64
	jmp	.L40
.L33:
	endbr64
.L40:
	movq	%rax, %rbp
.L30:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L39
.L34:
	endbr64
	movq	%rax, %rbp
.L31:
	movl	$144, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L39:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE13:
	.cfi_endproc
.LFE4572:
	.section	.gcc_except_table
.LLSDA4572:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4572-.LLSDACSB4572
.LLSDACSB4572:
	.uleb128 .LEHB7-.LFB4572
	.uleb128 .LEHE7-.LEHB7
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB8-.LFB4572
	.uleb128 .LEHE8-.LEHB8
	.uleb128 .L32-.LFB4572
	.uleb128 0
	.uleb128 .LEHB9-.LFB4572
	.uleb128 .LEHE9-.LEHB9
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB10-.LFB4572
	.uleb128 .LEHE10-.LEHB10
	.uleb128 .L33-.LFB4572
	.uleb128 0
	.uleb128 .LEHB11-.LFB4572
	.uleb128 .LEHE11-.LEHB11
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB12-.LFB4572
	.uleb128 .LEHE12-.LEHB12
	.uleb128 .L34-.LFB4572
	.uleb128 0
	.uleb128 .LEHB13-.LFB4572
	.uleb128 .LEHE13-.LEHB13
	.uleb128 0
	.uleb128 0
.LLSDACSE4572:
	.text
	.size	_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff, .-_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff
	.section	.rodata.str1.1
.LC3:
	.string	"y must be a matrix"
.LC4:
	.string	"y_hat must be a matrix"
.LC5:
	.string	"y and y_hat must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_:
.LFB4573:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4573
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB14:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE14:
	cmpq	$2, %rax
	je	.L42
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC3(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB15:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE15:
	jmp	.L57
.L42:
	movq	%r12, %rdi
.LEHB16:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE16:
	cmpq	$2, %rax
	je	.L43
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC4(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB17:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE17:
	jmp	.L57
.L43:
	movq	%r12, %rdi
.LEHB18:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE18:
	testb	%al, %al
	je	.L44
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC5(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB19:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE19:
.L57:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB20:
	call	__cxa_throw@PLT
.L44:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE20:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB21:
	call	_ZN3ops14ArgmaxAccuracyC1EPNS_2OpES2_@PLT
.LEHE21:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB22:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L49:
	.cfi_restore_state
	endbr64
	jmp	.L59
.L50:
	endbr64
	jmp	.L59
.L51:
	endbr64
.L59:
	movq	%rax, %rbp
.L47:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L58
.L52:
	endbr64
	movq	%rax, %rbp
.L48:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L58:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE22:
	.cfi_endproc
.LFE4573:
	.section	.gcc_except_table
.LLSDA4573:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4573-.LLSDACSB4573
.LLSDACSB4573:
	.uleb128 .LEHB14-.LFB4573
	.uleb128 .LEHE14-.LEHB14
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB15-.LFB4573
	.uleb128 .LEHE15-.LEHB15
	.uleb128 .L49-.LFB4573
	.uleb128 0
	.uleb128 .LEHB16-.LFB4573
	.uleb128 .LEHE16-.LEHB16
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB17-.LFB4573
	.uleb128 .LEHE17-.LEHB17
	.uleb128 .L50-.LFB4573
	.uleb128 0
	.uleb128 .LEHB18-.LFB4573
	.uleb128 .LEHE18-.LEHB18
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB19-.LFB4573
	.uleb128 .LEHE19-.LEHB19
	.uleb128 .L51-.LFB4573
	.uleb128 0
	.uleb128 .LEHB20-.LFB4573
	.uleb128 .LEHE20-.LEHB20
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB21-.LFB4573
	.uleb128 .LEHE21-.LEHB21
	.uleb128 .L52-.LFB4573
	.uleb128 0
	.uleb128 .LEHB22-.LFB4573
	.uleb128 .LEHE22-.LEHB22
	.uleb128 0
	.uleb128 0
.LLSDACSE4573:
	.text
	.size	_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_, .-_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_
	.section	.rodata.str1.1
.LC6:
	.string	"Conv2D:input must be a 4D tensor"
.LC7:
	.string	"Conv2D:kernel must be a 4D tensor"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi
	.type	_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi, @function
_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi:
.LFB4574:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4574
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%rcx, %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
.LEHB23:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE23:
	cmpq	$4, %rax
	je	.L61
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC6(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB24:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE24:
	jmp	.L72
.L61:
	movq	%r12, %rdi
.LEHB25:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE25:
	cmpq	$4, %rax
	je	.L62
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC7(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB26:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE26:
.L72:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB27:
	call	__cxa_throw@PLT
.L62:
	movl	$184, %edi
	call	_Znwm@PLT
.LEHE27:
	movq	%r14, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB28:
	call	_ZN3ops6Conv2DC1EPNS_2OpES2_PKi@PLT
.LEHE28:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB29:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L66:
	.cfi_restore_state
	endbr64
	jmp	.L74
.L67:
	endbr64
.L74:
	movq	%rax, %rbp
.L64:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L73
.L68:
	endbr64
	movq	%rax, %rbp
.L65:
	movl	$184, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L73:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE29:
	.cfi_endproc
.LFE4574:
	.section	.gcc_except_table
.LLSDA4574:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4574-.LLSDACSB4574
.LLSDACSB4574:
	.uleb128 .LEHB23-.LFB4574
	.uleb128 .LEHE23-.LEHB23
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB24-.LFB4574
	.uleb128 .LEHE24-.LEHB24
	.uleb128 .L66-.LFB4574
	.uleb128 0
	.uleb128 .LEHB25-.LFB4574
	.uleb128 .LEHE25-.LEHB25
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB26-.LFB4574
	.uleb128 .LEHE26-.LEHB26
	.uleb128 .L67-.LFB4574
	.uleb128 0
	.uleb128 .LEHB27-.LFB4574
	.uleb128 .LEHE27-.LEHB27
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB28-.LFB4574
	.uleb128 .LEHE28-.LEHB28
	.uleb128 .L68-.LFB4574
	.uleb128 0
	.uleb128 .LEHB29-.LFB4574
	.uleb128 .LEHE29-.LEHB29
	.uleb128 0
	.uleb128 0
.LLSDACSE4574:
	.text
	.size	_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi, .-_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi
	.section	.rodata.str1.1
.LC8:
	.string	"Conv2DBiasAdd:z must be a 4D tensor"
.LC9:
	.string	"Conv2DBiasAdd:bias must be a 1D array"
.LC10:
	.string	"Conv2DBiasAdd:z and bias shape are not corresponding"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_:
.LFB4575:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4575
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB30:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE30:
	cmpq	$4, %rax
	je	.L76
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC8(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB31:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE31:
	jmp	.L91
.L76:
	movq	%r12, %rdi
.LEHB32:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE32:
	decq	%rax
	je	.L77
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC9(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB33:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE33:
	jmp	.L91
.L77:
	movq	%rbp, %rdi
.LEHB34:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movl	$3, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
	movq	%r12, %rdi
	movl	%eax, %ebx
	call	_ZNK3ops2Op9shape_getEv@PLT
	xorl	%esi, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
.LEHE34:
	cmpl	%eax, %ebx
	je	.L78
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC10(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB35:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE35:
.L91:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB36:
	call	__cxa_throw@PLT
.L78:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE36:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB37:
	call	_ZN3ops13Conv2DBiasAddC1EPNS_2OpES2_@PLT
.LEHE37:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB38:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L83:
	.cfi_restore_state
	endbr64
	jmp	.L93
.L84:
	endbr64
	jmp	.L93
.L85:
	endbr64
.L93:
	movq	%rax, %rbp
.L81:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L92
.L86:
	endbr64
	movq	%rax, %rbp
.L82:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L92:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE38:
	.cfi_endproc
.LFE4575:
	.section	.gcc_except_table
.LLSDA4575:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4575-.LLSDACSB4575
.LLSDACSB4575:
	.uleb128 .LEHB30-.LFB4575
	.uleb128 .LEHE30-.LEHB30
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB31-.LFB4575
	.uleb128 .LEHE31-.LEHB31
	.uleb128 .L83-.LFB4575
	.uleb128 0
	.uleb128 .LEHB32-.LFB4575
	.uleb128 .LEHE32-.LEHB32
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB33-.LFB4575
	.uleb128 .LEHE33-.LEHB33
	.uleb128 .L84-.LFB4575
	.uleb128 0
	.uleb128 .LEHB34-.LFB4575
	.uleb128 .LEHE34-.LEHB34
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB35-.LFB4575
	.uleb128 .LEHE35-.LEHB35
	.uleb128 .L85-.LFB4575
	.uleb128 0
	.uleb128 .LEHB36-.LFB4575
	.uleb128 .LEHE36-.LEHB36
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB37-.LFB4575
	.uleb128 .LEHE37-.LEHB37
	.uleb128 .L86-.LFB4575
	.uleb128 0
	.uleb128 .LEHB38-.LFB4575
	.uleb128 .LEHE38-.LEHB38
	.uleb128 0
	.uleb128 0
.LLSDACSE4575:
	.text
	.size	_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_, .-_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_
	.section	.rodata.str1.1
.LC11:
	.string	"Conv2DBiasAddGrad:z must be a 4D tensor"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE
	.type	_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE, @function
_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE:
.LFB4576:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4576
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	movq	%rsi, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
.LEHB39:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE39:
	cmpq	$4, %rax
	je	.L95
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC11(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB40:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE40:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB41:
	call	__cxa_throw@PLT
.L95:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE41:
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB42:
	call	_ZN3ops17Conv2DBiasAddGradC1EPNS_2OpE@PLT
.LEHE42:
	movq	(%r12), %rdi
	movq	%rbx, %rsi
.LEHB43:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L98:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L96:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L103
.L99:
	endbr64
	movq	%rax, %rbp
.L97:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L103:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE43:
	.cfi_endproc
.LFE4576:
	.section	.gcc_except_table
.LLSDA4576:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4576-.LLSDACSB4576
.LLSDACSB4576:
	.uleb128 .LEHB39-.LFB4576
	.uleb128 .LEHE39-.LEHB39
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB40-.LFB4576
	.uleb128 .LEHE40-.LEHB40
	.uleb128 .L98-.LFB4576
	.uleb128 0
	.uleb128 .LEHB41-.LFB4576
	.uleb128 .LEHE41-.LEHB41
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB42-.LFB4576
	.uleb128 .LEHE42-.LEHB42
	.uleb128 .L99-.LFB4576
	.uleb128 0
	.uleb128 .LEHB43-.LFB4576
	.uleb128 .LEHE43-.LEHB43
	.uleb128 0
	.uleb128 0
.LLSDACSE4576:
	.text
	.size	_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE, .-_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE
	.align 2
	.globl	_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_
	.type	_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_, @function
_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_:
.LFB4577:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4577
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$136, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movq	%rsi, 24(%rsp)
	movq	%rdx, 16(%rsp)
	movq	%rcx, 8(%rsp)
	movq	%r8, (%rsp)
.LEHB44:
	call	_Znwm@PLT
.LEHE44:
	movq	(%rsp), %r8
	movq	8(%rsp), %rcx
	movq	16(%rsp), %rdx
	movq	24(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB45:
	call	_ZN3ops15Conv2DInputGradC1EPNS_2OpES2_PKiS4_@PLT
.LEHE45:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB46:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L106:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L105:
	movq	%rbx, %rdi
	movl	$136, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE46:
	.cfi_endproc
.LFE4577:
	.section	.gcc_except_table
.LLSDA4577:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4577-.LLSDACSB4577
.LLSDACSB4577:
	.uleb128 .LEHB44-.LFB4577
	.uleb128 .LEHE44-.LEHB44
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB45-.LFB4577
	.uleb128 .LEHE45-.LEHB45
	.uleb128 .L106-.LFB4577
	.uleb128 0
	.uleb128 .LEHB46-.LFB4577
	.uleb128 .LEHE46-.LEHB46
	.uleb128 0
	.uleb128 0
.LLSDACSE4577:
	.text
	.size	_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_, .-_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_
	.align 2
	.globl	_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_
	.type	_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_, @function
_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_:
.LFB4578:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4578
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$144, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$56, %rsp
	.cfi_def_cfa_offset 80
	movq	%rsi, 40(%rsp)
	movq	%rdx, 32(%rsp)
	movq	%rcx, 24(%rsp)
	movq	%r8, 16(%rsp)
	movq	%r9, 8(%rsp)
.LEHB47:
	call	_Znwm@PLT
.LEHE47:
	movq	8(%rsp), %r9
	movq	16(%rsp), %r8
	movq	24(%rsp), %rcx
	movq	32(%rsp), %rdx
	movq	%rax, %rdi
	movq	%rax, %rbx
	movq	40(%rsp), %rsi
.LEHB48:
	call	_ZN3ops16Conv2DKernelGradC1EPNS_2OpES2_PKiS4_S4_@PLT
.LEHE48:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB49:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$56, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L112:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L111:
	movq	%rbx, %rdi
	movl	$144, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE49:
	.cfi_endproc
.LFE4578:
	.section	.gcc_except_table
.LLSDA4578:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4578-.LLSDACSB4578
.LLSDACSB4578:
	.uleb128 .LEHB47-.LFB4578
	.uleb128 .LEHE47-.LEHB47
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB48-.LFB4578
	.uleb128 .LEHE48-.LEHB48
	.uleb128 .L112-.LFB4578
	.uleb128 0
	.uleb128 .LEHB49-.LFB4578
	.uleb128 .LEHE49-.LEHB49
	.uleb128 0
	.uleb128 0
.LLSDACSE4578:
	.text
	.size	_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_, .-_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_
	.align 2
	.globl	_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_
	.type	_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_, @function
_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_:
.LFB4579:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4579
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$176, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movq	%rsi, 24(%rsp)
	movq	%rdx, 16(%rsp)
	movq	%rcx, 8(%rsp)
	movq	%r8, (%rsp)
.LEHB50:
	call	_Znwm@PLT
.LEHE50:
	movq	(%rsp), %r8
	movq	8(%rsp), %rcx
	movq	16(%rsp), %rdx
	movq	24(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB51:
	call	_ZN3ops15Conv2DTransposeC1EPNS_2OpES2_PKiS4_@PLT
.LEHE51:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB52:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L118:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L117:
	movq	%rbx, %rdi
	movl	$176, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE52:
	.cfi_endproc
.LFE4579:
	.section	.gcc_except_table
.LLSDA4579:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4579-.LLSDACSB4579
.LLSDACSB4579:
	.uleb128 .LEHB50-.LFB4579
	.uleb128 .LEHE50-.LEHB50
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB51-.LFB4579
	.uleb128 .LEHE51-.LEHB51
	.uleb128 .L118-.LFB4579
	.uleb128 0
	.uleb128 .LEHB52-.LFB4579
	.uleb128 .LEHE52-.LEHB52
	.uleb128 0
	.uleb128 0
.LLSDACSE4579:
	.text
	.size	_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_, .-_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_
	.align 2
	.globl	_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_
	.type	_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_, @function
_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_:
.LFB4580:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4580
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$136, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movq	%rsi, 24(%rsp)
	movq	%rdx, 16(%rsp)
	movq	%rcx, 8(%rsp)
	movq	%r8, (%rsp)
.LEHB53:
	call	_Znwm@PLT
.LEHE53:
	movq	(%rsp), %r8
	movq	8(%rsp), %rcx
	movq	16(%rsp), %rdx
	movq	24(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB54:
	call	_ZN3ops24Conv2DTransposeInputGradC1EPNS_2OpES2_PKiS4_@PLT
.LEHE54:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB55:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L124:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L123:
	movq	%rbx, %rdi
	movl	$136, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE55:
	.cfi_endproc
.LFE4580:
	.section	.gcc_except_table
.LLSDA4580:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4580-.LLSDACSB4580
.LLSDACSB4580:
	.uleb128 .LEHB53-.LFB4580
	.uleb128 .LEHE53-.LEHB53
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB54-.LFB4580
	.uleb128 .LEHE54-.LEHB54
	.uleb128 .L124-.LFB4580
	.uleb128 0
	.uleb128 .LEHB55-.LFB4580
	.uleb128 .LEHE55-.LEHB55
	.uleb128 0
	.uleb128 0
.LLSDACSE4580:
	.text
	.size	_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_, .-_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_
	.align 2
	.globl	_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_
	.type	_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_, @function
_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_:
.LFB4581:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4581
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$136, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movq	%rsi, 24(%rsp)
	movq	%rdx, 16(%rsp)
	movq	%rcx, 8(%rsp)
	movq	%r8, (%rsp)
.LEHB56:
	call	_Znwm@PLT
.LEHE56:
	movq	(%rsp), %r8
	movq	8(%rsp), %rcx
	movq	16(%rsp), %rdx
	movq	24(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB57:
	call	_ZN3ops25Conv2DTransposeKernelGradC1EPNS_2OpES2_PKiS4_@PLT
.LEHE57:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB58:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L130:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L129:
	movq	%rbx, %rdi
	movl	$136, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE58:
	.cfi_endproc
.LFE4581:
	.section	.gcc_except_table
.LLSDA4581:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4581-.LLSDACSB4581
.LLSDACSB4581:
	.uleb128 .LEHB56-.LFB4581
	.uleb128 .LEHE56-.LEHB56
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB57-.LFB4581
	.uleb128 .LEHE57-.LEHB57
	.uleb128 .L130-.LFB4581
	.uleb128 0
	.uleb128 .LEHB58-.LFB4581
	.uleb128 .LEHE58-.LEHB58
	.uleb128 0
	.uleb128 0
.LLSDACSE4581:
	.text
	.size	_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_, .-_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_
	.align 2
	.globl	_ZN3ops10OpsBuilder5inputERKNS_5ShapeE
	.type	_ZN3ops10OpsBuilder5inputERKNS_5ShapeE, @function
_ZN3ops10OpsBuilder5inputERKNS_5ShapeE:
.LFB4582:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4582
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$128, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%rsi, 8(%rsp)
.LEHB59:
	call	_Znwm@PLT
.LEHE59:
	movq	8(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB60:
	call	_ZN3ops5InputC1ERKNS_5ShapeE@PLT
.LEHE60:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB61:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L136:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L135:
	movq	%rbx, %rdi
	movl	$128, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE61:
	.cfi_endproc
.LFE4582:
	.section	.gcc_except_table
.LLSDA4582:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4582-.LLSDACSB4582
.LLSDACSB4582:
	.uleb128 .LEHB59-.LFB4582
	.uleb128 .LEHE59-.LEHB59
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB60-.LFB4582
	.uleb128 .LEHE60-.LEHB60
	.uleb128 .L136-.LFB4582
	.uleb128 0
	.uleb128 .LEHB61-.LFB4582
	.uleb128 .LEHE61-.LEHB61
	.uleb128 0
	.uleb128 0
.LLSDACSE4582:
	.text
	.size	_ZN3ops10OpsBuilder5inputERKNS_5ShapeE, .-_ZN3ops10OpsBuilder5inputERKNS_5ShapeE
	.section	.rodata.str1.1
.LC12:
	.string	"LeakyReluGrad: z and dout must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f
	.type	_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f, @function
_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f:
.LFB4583:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4583
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movd	%xmm0, %r14d
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rdi, %r13
	movq	%rdx, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
.LEHB62:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE62:
	testb	%al, %al
	je	.L141
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC12(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB63:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE63:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB64:
	call	__cxa_throw@PLT
.L141:
	movl	$120, %edi
	call	_Znwm@PLT
.LEHE64:
	movd	%r14d, %xmm0
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB65:
	call	_ZN3ops13LeakyReluGradC1EPNS_2OpES2_f@PLT
.LEHE65:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB66:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L144:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L142:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L149
.L145:
	endbr64
	movq	%rax, %rbp
.L143:
	movl	$120, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L149:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE66:
	.cfi_endproc
.LFE4583:
	.section	.gcc_except_table
.LLSDA4583:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4583-.LLSDACSB4583
.LLSDACSB4583:
	.uleb128 .LEHB62-.LFB4583
	.uleb128 .LEHE62-.LEHB62
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB63-.LFB4583
	.uleb128 .LEHE63-.LEHB63
	.uleb128 .L144-.LFB4583
	.uleb128 0
	.uleb128 .LEHB64-.LFB4583
	.uleb128 .LEHE64-.LEHB64
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB65-.LFB4583
	.uleb128 .LEHE65-.LEHB65
	.uleb128 .L145-.LFB4583
	.uleb128 0
	.uleb128 .LEHB66-.LFB4583
	.uleb128 .LEHE66-.LEHB66
	.uleb128 0
	.uleb128 0
.LLSDACSE4583:
	.text
	.size	_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f, .-_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f
	.section	.rodata.str1.1
.LC13:
	.string	"log softmax input must be a matrix"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE
	.type	_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE, @function
_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE:
.LFB4584:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4584
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	movq	%rsi, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
.LEHB67:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE67:
	cmpq	$2, %rax
	je	.L151
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC13(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB68:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE68:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB69:
	call	__cxa_throw@PLT
.L151:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE69:
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB70:
	call	_ZN3ops10LogSoftmaxC1EPNS_2OpE@PLT
.LEHE70:
	movq	(%r12), %rdi
	movq	%rbx, %rsi
.LEHB71:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L154:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L152:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L159
.L155:
	endbr64
	movq	%rax, %rbp
.L153:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L159:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE71:
	.cfi_endproc
.LFE4584:
	.section	.gcc_except_table
.LLSDA4584:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4584-.LLSDACSB4584
.LLSDACSB4584:
	.uleb128 .LEHB67-.LFB4584
	.uleb128 .LEHE67-.LEHB67
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB68-.LFB4584
	.uleb128 .LEHE68-.LEHB68
	.uleb128 .L154-.LFB4584
	.uleb128 0
	.uleb128 .LEHB69-.LFB4584
	.uleb128 .LEHE69-.LEHB69
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB70-.LFB4584
	.uleb128 .LEHE70-.LEHB70
	.uleb128 .L155-.LFB4584
	.uleb128 0
	.uleb128 .LEHB71-.LFB4584
	.uleb128 .LEHE71-.LEHB71
	.uleb128 0
	.uleb128 0
.LLSDACSE4584:
	.text
	.size	_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE, .-_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE
	.section	.rodata.str1.1
.LC14:
	.string	"left operand must be a matrix"
.LC15:
	.string	"right operand must be a matrix"
.LC16:
	.string	"left[1] and right[0] differ"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb
	.type	_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb, @function
_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb:
.LFB4585:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4585
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdi, %r15
	movq	%rsi, %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movl	%r8d, %r14d
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movl	%ecx, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	pushq	%r9
	.cfi_def_cfa_offset 64
.LEHB72:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE72:
	cmpq	$2, %rax
	je	.L161
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC14(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB73:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE73:
	jmp	.L176
.L161:
	movq	%r13, %rdi
.LEHB74:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE74:
	cmpq	$2, %rax
	je	.L162
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC15(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB75:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE75:
	jmp	.L176
.L162:
	movq	%r12, %rdi
.LEHB76:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movl	%ebp, %esi
	xorl	$1, %esi
	movq	%rax, %rdi
	movzbl	%sil, %esi
	call	_ZNK3ops5ShapeixEm@PLT
	movq	%r13, %rdi
	movl	%eax, %ebx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movzbl	%r14b, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
.LEHE76:
	cmpl	%eax, %ebx
	je	.L163
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC16(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB77:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE77:
.L176:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB78:
	call	__cxa_throw@PLT
.L163:
	movl	$120, %edi
	call	_Znwm@PLT
.LEHE78:
	movzbl	%bpl, %ecx
	movzbl	%r14b, %r8d
	movq	%r13, %rdx
	movq	%r12, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB79:
	call	_ZN3ops9MatMatMulC1EPNS_2OpES2_bb@PLT
.LEHE79:
	movq	(%r15), %rdi
	movq	%rbx, %rsi
.LEHB80:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L168:
	.cfi_restore_state
	endbr64
	jmp	.L178
.L169:
	endbr64
	jmp	.L178
.L170:
	endbr64
.L178:
	movq	%rax, %rbp
.L166:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L177
.L171:
	endbr64
	movq	%rax, %rbp
.L167:
	movl	$120, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L177:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE80:
	.cfi_endproc
.LFE4585:
	.section	.gcc_except_table
.LLSDA4585:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4585-.LLSDACSB4585
.LLSDACSB4585:
	.uleb128 .LEHB72-.LFB4585
	.uleb128 .LEHE72-.LEHB72
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB73-.LFB4585
	.uleb128 .LEHE73-.LEHB73
	.uleb128 .L168-.LFB4585
	.uleb128 0
	.uleb128 .LEHB74-.LFB4585
	.uleb128 .LEHE74-.LEHB74
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB75-.LFB4585
	.uleb128 .LEHE75-.LEHB75
	.uleb128 .L169-.LFB4585
	.uleb128 0
	.uleb128 .LEHB76-.LFB4585
	.uleb128 .LEHE76-.LEHB76
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB77-.LFB4585
	.uleb128 .LEHE77-.LEHB77
	.uleb128 .L170-.LFB4585
	.uleb128 0
	.uleb128 .LEHB78-.LFB4585
	.uleb128 .LEHE78-.LEHB78
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB79-.LFB4585
	.uleb128 .LEHE79-.LEHB79
	.uleb128 .L171-.LFB4585
	.uleb128 0
	.uleb128 .LEHB80-.LFB4585
	.uleb128 .LEHE80-.LEHB80
	.uleb128 0
	.uleb128 0
.LLSDACSE4585:
	.text
	.size	_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb, .-_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb
	.section	.rodata.str1.1
.LC17:
	.string	"x must be a matrix"
.LC18:
	.string	"w must be a matrix"
.LC19:
	.string	"b must be a vector"
.LC20:
	.string	"x[1] and w[0] differ"
.LC21:
	.string	"w[1] and b[0] differ"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_
	.type	_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_, @function
_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_:
.LFB4586:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4586
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%rdi, %r14
	movq	%rsi, %rdi
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rcx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
.LEHB81:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE81:
	cmpq	$2, %rax
	je	.L180
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC17(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB82:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE82:
	jmp	.L203
.L180:
	movq	%rbp, %rdi
.LEHB83:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE83:
	cmpq	$2, %rax
	je	.L181
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC18(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB84:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE84:
	jmp	.L203
.L181:
	movq	%r13, %rdi
.LEHB85:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE85:
	decq	%rax
	je	.L182
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC19(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB86:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE86:
	jmp	.L203
.L182:
	movq	%r12, %rdi
.LEHB87:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movl	$1, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
	movq	%rbp, %rdi
	movl	%eax, %ebx
	call	_ZNK3ops2Op9shape_getEv@PLT
	xorl	%esi, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
.LEHE87:
	cmpl	%eax, %ebx
	je	.L183
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC20(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB88:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE88:
	jmp	.L203
.L183:
	movq	%rbp, %rdi
.LEHB89:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movl	$1, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
	movq	%r13, %rdi
	movl	%eax, %ebx
	call	_ZNK3ops2Op9shape_getEv@PLT
	xorl	%esi, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
.LEHE89:
	cmpl	%eax, %ebx
	je	.L184
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC21(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB90:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE90:
.L203:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB91:
	call	__cxa_throw@PLT
.L184:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE91:
	movq	%r13, %rcx
	movq	%rbp, %rdx
	movq	%r12, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB92:
	call	_ZN3ops9MatMulAddC1EPNS_2OpES2_S2_@PLT
.LEHE92:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
.LEHB93:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L191:
	.cfi_restore_state
	endbr64
	jmp	.L204
.L192:
	endbr64
	jmp	.L204
.L193:
	endbr64
	jmp	.L204
.L194:
	endbr64
	jmp	.L204
.L195:
	endbr64
.L204:
	movq	%rax, %rbp
.L189:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L202
.L196:
	endbr64
	movq	%rax, %rbp
.L190:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L202:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE93:
	.cfi_endproc
.LFE4586:
	.section	.gcc_except_table
.LLSDA4586:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4586-.LLSDACSB4586
.LLSDACSB4586:
	.uleb128 .LEHB81-.LFB4586
	.uleb128 .LEHE81-.LEHB81
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB82-.LFB4586
	.uleb128 .LEHE82-.LEHB82
	.uleb128 .L191-.LFB4586
	.uleb128 0
	.uleb128 .LEHB83-.LFB4586
	.uleb128 .LEHE83-.LEHB83
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB84-.LFB4586
	.uleb128 .LEHE84-.LEHB84
	.uleb128 .L192-.LFB4586
	.uleb128 0
	.uleb128 .LEHB85-.LFB4586
	.uleb128 .LEHE85-.LEHB85
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB86-.LFB4586
	.uleb128 .LEHE86-.LEHB86
	.uleb128 .L193-.LFB4586
	.uleb128 0
	.uleb128 .LEHB87-.LFB4586
	.uleb128 .LEHE87-.LEHB87
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB88-.LFB4586
	.uleb128 .LEHE88-.LEHB88
	.uleb128 .L194-.LFB4586
	.uleb128 0
	.uleb128 .LEHB89-.LFB4586
	.uleb128 .LEHE89-.LEHB89
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB90-.LFB4586
	.uleb128 .LEHE90-.LEHB90
	.uleb128 .L195-.LFB4586
	.uleb128 0
	.uleb128 .LEHB91-.LFB4586
	.uleb128 .LEHE91-.LEHB91
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB92-.LFB4586
	.uleb128 .LEHE92-.LEHB92
	.uleb128 .L196-.LFB4586
	.uleb128 0
	.uleb128 .LEHB93-.LFB4586
	.uleb128 .LEHE93-.LEHB93
	.uleb128 0
	.uleb128 0
.LLSDACSE4586:
	.text
	.size	_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_, .-_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_
	.section	.rodata.str1.1
.LC22:
	.string	"right operand must be a vector"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_:
.LFB4587:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4587
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB94:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE94:
	cmpq	$2, %rax
	je	.L206
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC14(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB95:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE95:
	jmp	.L221
.L206:
	movq	%r12, %rdi
.LEHB96:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE96:
	decq	%rax
	je	.L207
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC22(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB97:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE97:
	jmp	.L221
.L207:
	movq	%rbp, %rdi
.LEHB98:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movl	$1, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
	movq	%r12, %rdi
	movl	%eax, %ebx
	call	_ZNK3ops2Op9shape_getEv@PLT
	xorl	%esi, %esi
	movq	%rax, %rdi
	call	_ZNK3ops5ShapeixEm@PLT
.LEHE98:
	cmpl	%eax, %ebx
	je	.L208
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC16(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB99:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE99:
.L221:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB100:
	call	__cxa_throw@PLT
.L208:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE100:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB101:
	call	_ZN3ops11MatRvectAddC1EPNS_2OpES2_@PLT
.LEHE101:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB102:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L213:
	.cfi_restore_state
	endbr64
	jmp	.L223
.L214:
	endbr64
	jmp	.L223
.L215:
	endbr64
.L223:
	movq	%rax, %rbp
.L211:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L222
.L216:
	endbr64
	movq	%rax, %rbp
.L212:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L222:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE102:
	.cfi_endproc
.LFE4587:
	.section	.gcc_except_table
.LLSDA4587:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4587-.LLSDACSB4587
.LLSDACSB4587:
	.uleb128 .LEHB94-.LFB4587
	.uleb128 .LEHE94-.LEHB94
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB95-.LFB4587
	.uleb128 .LEHE95-.LEHB95
	.uleb128 .L213-.LFB4587
	.uleb128 0
	.uleb128 .LEHB96-.LFB4587
	.uleb128 .LEHE96-.LEHB96
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB97-.LFB4587
	.uleb128 .LEHE97-.LEHB97
	.uleb128 .L214-.LFB4587
	.uleb128 0
	.uleb128 .LEHB98-.LFB4587
	.uleb128 .LEHE98-.LEHB98
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB99-.LFB4587
	.uleb128 .LEHE99-.LEHB99
	.uleb128 .L215-.LFB4587
	.uleb128 0
	.uleb128 .LEHB100-.LFB4587
	.uleb128 .LEHE100-.LEHB100
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB101-.LFB4587
	.uleb128 .LEHE101-.LEHB101
	.uleb128 .L216-.LFB4587
	.uleb128 0
	.uleb128 .LEHB102-.LFB4587
	.uleb128 .LEHE102-.LEHB102
	.uleb128 0
	.uleb128 0
.LLSDACSE4587:
	.text
	.size	_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_, .-_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_
	.section	.rodata.str1.1
.LC23:
	.string	"arg must be a matrix"
.LC24:
	.string	"axis must be 0 or 1"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm
	.type	_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm, @function
_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm:
.LFB4588:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4588
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB103:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE103:
	cmpq	$2, %rax
	je	.L225
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC23(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB104:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE104:
	jmp	.L236
.L225:
	cmpq	$1, %r12
	jbe	.L226
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC24(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB105:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE105:
.L236:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB106:
	call	__cxa_throw@PLT
.L226:
	movl	$120, %edi
	call	_Znwm@PLT
.LEHE106:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB107:
	call	_ZN3ops6MatSumC1EPNS_2OpEm@PLT
.LEHE107:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB108:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L230:
	.cfi_restore_state
	endbr64
	jmp	.L238
.L231:
	endbr64
.L238:
	movq	%rax, %rbp
.L228:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L237
.L232:
	endbr64
	movq	%rax, %rbp
.L229:
	movl	$120, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L237:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE108:
	.cfi_endproc
.LFE4588:
	.section	.gcc_except_table
.LLSDA4588:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4588-.LLSDACSB4588
.LLSDACSB4588:
	.uleb128 .LEHB103-.LFB4588
	.uleb128 .LEHE103-.LEHB103
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB104-.LFB4588
	.uleb128 .LEHE104-.LEHB104
	.uleb128 .L230-.LFB4588
	.uleb128 0
	.uleb128 .LEHB105-.LFB4588
	.uleb128 .LEHE105-.LEHB105
	.uleb128 .L231-.LFB4588
	.uleb128 0
	.uleb128 .LEHB106-.LFB4588
	.uleb128 .LEHE106-.LEHB106
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB107-.LFB4588
	.uleb128 .LEHE107-.LEHB107
	.uleb128 .L232-.LFB4588
	.uleb128 0
	.uleb128 .LEHB108-.LFB4588
	.uleb128 .LEHE108-.LEHB108
	.uleb128 0
	.uleb128 0
.LLSDACSE4588:
	.text
	.size	_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm, .-_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm
	.section	.rodata.str1.1
.LC25:
	.string	"var and dt must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb
	.type	_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb, @function
_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb:
.LFB4589:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4589
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movd	%xmm0, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rdi, %r14
	movq	%rdx, %rdi
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movl	%ecx, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movss	%xmm1, 12(%rsp)
.LEHB109:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%r12, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE109:
	movss	12(%rsp), %xmm1
	testb	%al, %al
	je	.L240
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC25(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB110:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE110:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB111:
	call	__cxa_throw@PLT
.L240:
	movl	$136, %edi
	movss	%xmm1, 12(%rsp)
	call	_Znwm@PLT
.LEHE111:
	movzbl	%bpl, %ecx
	movq	%r13, %rdx
	movq	%r12, %rsi
	movss	12(%rsp), %xmm1
	movd	%r15d, %xmm0
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB112:
	call	_ZN3ops12MomentUpdateC1EPNS_8VariableEPNS_2OpEffb@PLT
.LEHE112:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
.LEHB113:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L243:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L241:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L248
.L244:
	endbr64
	movq	%rax, %rbp
.L242:
	movl	$136, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L248:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE113:
	.cfi_endproc
.LFE4589:
	.section	.gcc_except_table
.LLSDA4589:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4589-.LLSDACSB4589
.LLSDACSB4589:
	.uleb128 .LEHB109-.LFB4589
	.uleb128 .LEHE109-.LEHB109
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB110-.LFB4589
	.uleb128 .LEHE110-.LEHB110
	.uleb128 .L243-.LFB4589
	.uleb128 0
	.uleb128 .LEHB111-.LFB4589
	.uleb128 .LEHE111-.LEHB111
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB112-.LFB4589
	.uleb128 .LEHE112-.LEHB112
	.uleb128 .L244-.LFB4589
	.uleb128 0
	.uleb128 .LEHB113-.LFB4589
	.uleb128 .LEHE113-.LEHB113
	.uleb128 0
	.uleb128 0
.LLSDACSE4589:
	.text
	.size	_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb, .-_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb
	.section	.rodata.str1.1
.LC26:
	.string	"MSE:y must be a matrix"
.LC27:
	.string	"MSE:y_hat must be a matrix"
.LC28:
	.string	"MSE: y and y_hat must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder3mseEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder3mseEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder3mseEPNS_2OpES2_:
.LFB4590:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4590
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB114:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE114:
	cmpq	$2, %rax
	je	.L250
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC26(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB115:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE115:
	jmp	.L265
.L250:
	movq	%r12, %rdi
.LEHB116:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE116:
	cmpq	$2, %rax
	je	.L251
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC27(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB117:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE117:
	jmp	.L265
.L251:
	movq	%r12, %rdi
.LEHB118:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE118:
	testb	%al, %al
	je	.L252
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC28(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB119:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE119:
.L265:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB120:
	call	__cxa_throw@PLT
.L252:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE120:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB121:
	call	_ZN3ops3MSEC1EPNS_2OpES2_@PLT
.LEHE121:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB122:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L257:
	.cfi_restore_state
	endbr64
	jmp	.L267
.L258:
	endbr64
	jmp	.L267
.L259:
	endbr64
.L267:
	movq	%rax, %rbp
.L255:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L266
.L260:
	endbr64
	movq	%rax, %rbp
.L256:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L266:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE122:
	.cfi_endproc
.LFE4590:
	.section	.gcc_except_table
.LLSDA4590:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4590-.LLSDACSB4590
.LLSDACSB4590:
	.uleb128 .LEHB114-.LFB4590
	.uleb128 .LEHE114-.LEHB114
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB115-.LFB4590
	.uleb128 .LEHE115-.LEHB115
	.uleb128 .L257-.LFB4590
	.uleb128 0
	.uleb128 .LEHB116-.LFB4590
	.uleb128 .LEHE116-.LEHB116
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB117-.LFB4590
	.uleb128 .LEHE117-.LEHB117
	.uleb128 .L258-.LFB4590
	.uleb128 0
	.uleb128 .LEHB118-.LFB4590
	.uleb128 .LEHE118-.LEHB118
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB119-.LFB4590
	.uleb128 .LEHE119-.LEHB119
	.uleb128 .L259-.LFB4590
	.uleb128 0
	.uleb128 .LEHB120-.LFB4590
	.uleb128 .LEHE120-.LEHB120
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB121-.LFB4590
	.uleb128 .LEHE121-.LEHB121
	.uleb128 .L260-.LFB4590
	.uleb128 0
	.uleb128 .LEHB122-.LFB4590
	.uleb128 .LEHE122-.LEHB122
	.uleb128 0
	.uleb128 0
.LLSDACSE4590:
	.text
	.size	_ZN3ops10OpsBuilder3mseEPNS_2OpES2_, .-_ZN3ops10OpsBuilder3mseEPNS_2OpES2_
	.section	.rodata.str1.1
.LC29:
	.string	"Reshape:"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE
	.type	_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE, @function
_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE:
.LFB4591:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4591
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
.LEHB123:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %r14
	call	_ZNK3ops5Shape7definedEv@PLT
	testb	%al, %al
	je	.L269
	movq	%rbp, %rdi
	call	_ZNK3ops5Shape5totalEv@PLT
	movq	%r14, %rdi
	movl	%eax, %ebx
	call	_ZNK3ops5Shape5totalEv@PLT
.LEHE123:
	cmpl	%eax, %ebx
	je	.L269
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC29(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB124:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE124:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB125:
	call	__cxa_throw@PLT
.L269:
	movl	$120, %edi
	call	_Znwm@PLT
.LEHE125:
	movq	%rbp, %rdx
	movq	%r12, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB126:
	call	_ZN3ops7ReshapeC1EPNS_2OpERKNS_5ShapeE@PLT
.LEHE126:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB127:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L274:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L272:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L283
.L275:
	endbr64
	movq	%rax, %rbp
.L273:
	movl	$120, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L283:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE127:
	.cfi_endproc
.LFE4591:
	.section	.gcc_except_table
.LLSDA4591:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4591-.LLSDACSB4591
.LLSDACSB4591:
	.uleb128 .LEHB123-.LFB4591
	.uleb128 .LEHE123-.LEHB123
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB124-.LFB4591
	.uleb128 .LEHE124-.LEHB124
	.uleb128 .L274-.LFB4591
	.uleb128 0
	.uleb128 .LEHB125-.LFB4591
	.uleb128 .LEHE125-.LEHB125
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB126-.LFB4591
	.uleb128 .LEHE126-.LEHB126
	.uleb128 .L275-.LFB4591
	.uleb128 0
	.uleb128 .LEHB127-.LFB4591
	.uleb128 .LEHE127-.LEHB127
	.uleb128 0
	.uleb128 0
.LLSDACSE4591:
	.text
	.size	_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE, .-_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE
	.section	.rodata.str1.1
.LC30:
	.string	"MSEGrad: y must be a matrix"
.LC31:
	.string	"MSEGrad: y_hat must be a matrix"
.LC32:
	.string	"MSEGrad: y and y_hat must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_:
.LFB4592:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4592
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB128:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE128:
	cmpq	$2, %rax
	je	.L285
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC30(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB129:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE129:
	jmp	.L300
.L285:
	movq	%r12, %rdi
.LEHB130:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE130:
	cmpq	$2, %rax
	je	.L286
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC31(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB131:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE131:
	jmp	.L300
.L286:
	movq	%r12, %rdi
.LEHB132:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE132:
	testb	%al, %al
	je	.L287
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC32(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB133:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE133:
.L300:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB134:
	call	__cxa_throw@PLT
.L287:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE134:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB135:
	call	_ZN3ops7MSEGradC1EPNS_2OpES2_@PLT
.LEHE135:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB136:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L292:
	.cfi_restore_state
	endbr64
	jmp	.L302
.L293:
	endbr64
	jmp	.L302
.L294:
	endbr64
.L302:
	movq	%rax, %rbp
.L290:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L301
.L295:
	endbr64
	movq	%rax, %rbp
.L291:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L301:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE136:
	.cfi_endproc
.LFE4592:
	.section	.gcc_except_table
.LLSDA4592:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4592-.LLSDACSB4592
.LLSDACSB4592:
	.uleb128 .LEHB128-.LFB4592
	.uleb128 .LEHE128-.LEHB128
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB129-.LFB4592
	.uleb128 .LEHE129-.LEHB129
	.uleb128 .L292-.LFB4592
	.uleb128 0
	.uleb128 .LEHB130-.LFB4592
	.uleb128 .LEHE130-.LEHB130
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB131-.LFB4592
	.uleb128 .LEHE131-.LEHB131
	.uleb128 .L293-.LFB4592
	.uleb128 0
	.uleb128 .LEHB132-.LFB4592
	.uleb128 .LEHE132-.LEHB132
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB133-.LFB4592
	.uleb128 .LEHE133-.LEHB133
	.uleb128 .L294-.LFB4592
	.uleb128 0
	.uleb128 .LEHB134-.LFB4592
	.uleb128 .LEHE134-.LEHB134
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB135-.LFB4592
	.uleb128 .LEHE135-.LEHB135
	.uleb128 .L295-.LFB4592
	.uleb128 0
	.uleb128 .LEHB136-.LFB4592
	.uleb128 .LEHE136-.LEHB136
	.uleb128 0
	.uleb128 0
.LLSDACSE4592:
	.text
	.size	_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_, .-_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_
	.section	.rodata.str1.1
.LC33:
	.string	"ReluGrad: z and dout must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_:
.LFB4593:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4593
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rdx, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB137:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE137:
	testb	%al, %al
	je	.L304
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC33(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB138:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE138:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB139:
	call	__cxa_throw@PLT
.L304:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE139:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB140:
	call	_ZN3ops8ReluGradC1EPNS_2OpES2_@PLT
.LEHE140:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB141:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L307:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L305:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L312
.L308:
	endbr64
	movq	%rax, %rbp
.L306:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L312:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE141:
	.cfi_endproc
.LFE4593:
	.section	.gcc_except_table
.LLSDA4593:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4593-.LLSDACSB4593
.LLSDACSB4593:
	.uleb128 .LEHB137-.LFB4593
	.uleb128 .LEHE137-.LEHB137
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB138-.LFB4593
	.uleb128 .LEHE138-.LEHB138
	.uleb128 .L307-.LFB4593
	.uleb128 0
	.uleb128 .LEHB139-.LFB4593
	.uleb128 .LEHE139-.LEHB139
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB140-.LFB4593
	.uleb128 .LEHE140-.LEHB140
	.uleb128 .L308-.LFB4593
	.uleb128 0
	.uleb128 .LEHB141-.LFB4593
	.uleb128 .LEHE141-.LEHB141
	.uleb128 0
	.uleb128 0
.LLSDACSE4593:
	.text
	.size	_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_, .-_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_
	.section	.rodata.str1.1
.LC34:
	.string	"logits must be a matrix"
.LC35:
	.string	"y and logits must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_:
.LFB4595:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4595
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB142:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE142:
	cmpq	$2, %rax
	je	.L314
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC3(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB143:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE143:
	jmp	.L329
.L314:
	movq	%r12, %rdi
.LEHB144:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE144:
	cmpq	$2, %rax
	je	.L315
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC34(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB145:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE145:
	jmp	.L329
.L315:
	movq	%r12, %rdi
.LEHB146:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE146:
	testb	%al, %al
	je	.L316
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC35(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB147:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE147:
.L329:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB148:
	call	__cxa_throw@PLT
.L316:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE148:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB149:
	call	_ZN3ops19SigmoidCrossEntropyC1EPNS_2OpES2_@PLT
.LEHE149:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB150:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L321:
	.cfi_restore_state
	endbr64
	jmp	.L331
.L322:
	endbr64
	jmp	.L331
.L323:
	endbr64
.L331:
	movq	%rax, %rbp
.L319:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L330
.L324:
	endbr64
	movq	%rax, %rbp
.L320:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L330:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE150:
	.cfi_endproc
.LFE4595:
	.section	.gcc_except_table
.LLSDA4595:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4595-.LLSDACSB4595
.LLSDACSB4595:
	.uleb128 .LEHB142-.LFB4595
	.uleb128 .LEHE142-.LEHB142
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB143-.LFB4595
	.uleb128 .LEHE143-.LEHB143
	.uleb128 .L321-.LFB4595
	.uleb128 0
	.uleb128 .LEHB144-.LFB4595
	.uleb128 .LEHE144-.LEHB144
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB145-.LFB4595
	.uleb128 .LEHE145-.LEHB145
	.uleb128 .L322-.LFB4595
	.uleb128 0
	.uleb128 .LEHB146-.LFB4595
	.uleb128 .LEHE146-.LEHB146
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB147-.LFB4595
	.uleb128 .LEHE147-.LEHB147
	.uleb128 .L323-.LFB4595
	.uleb128 0
	.uleb128 .LEHB148-.LFB4595
	.uleb128 .LEHE148-.LEHB148
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB149-.LFB4595
	.uleb128 .LEHE149-.LEHB149
	.uleb128 .L324-.LFB4595
	.uleb128 0
	.uleb128 .LEHB150-.LFB4595
	.uleb128 .LEHE150-.LEHB150
	.uleb128 0
	.uleb128 0
.LLSDACSE4595:
	.text
	.size	_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_, .-_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_
	.align 2
	.globl	_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_:
.LFB4596:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4596
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB151:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE151:
	cmpq	$2, %rax
	je	.L333
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC3(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB152:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE152:
	jmp	.L348
.L333:
	movq	%r12, %rdi
.LEHB153:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE153:
	cmpq	$2, %rax
	je	.L334
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC34(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB154:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE154:
	jmp	.L348
.L334:
	movq	%r12, %rdi
.LEHB155:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE155:
	testb	%al, %al
	je	.L335
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC35(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB156:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE156:
.L348:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB157:
	call	__cxa_throw@PLT
.L335:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE157:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB158:
	call	_ZN3ops23SigmoidCrossEntropyGradC1EPNS_2OpES2_@PLT
.LEHE158:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB159:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L340:
	.cfi_restore_state
	endbr64
	jmp	.L350
.L341:
	endbr64
	jmp	.L350
.L342:
	endbr64
.L350:
	movq	%rax, %rbp
.L338:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L349
.L343:
	endbr64
	movq	%rax, %rbp
.L339:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L349:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE159:
	.cfi_endproc
.LFE4596:
	.section	.gcc_except_table
.LLSDA4596:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4596-.LLSDACSB4596
.LLSDACSB4596:
	.uleb128 .LEHB151-.LFB4596
	.uleb128 .LEHE151-.LEHB151
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB152-.LFB4596
	.uleb128 .LEHE152-.LEHB152
	.uleb128 .L340-.LFB4596
	.uleb128 0
	.uleb128 .LEHB153-.LFB4596
	.uleb128 .LEHE153-.LEHB153
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB154-.LFB4596
	.uleb128 .LEHE154-.LEHB154
	.uleb128 .L341-.LFB4596
	.uleb128 0
	.uleb128 .LEHB155-.LFB4596
	.uleb128 .LEHE155-.LEHB155
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB156-.LFB4596
	.uleb128 .LEHE156-.LEHB156
	.uleb128 .L342-.LFB4596
	.uleb128 0
	.uleb128 .LEHB157-.LFB4596
	.uleb128 .LEHE157-.LEHB157
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB158-.LFB4596
	.uleb128 .LEHE158-.LEHB158
	.uleb128 .L343-.LFB4596
	.uleb128 0
	.uleb128 .LEHB159-.LFB4596
	.uleb128 .LEHE159-.LEHB159
	.uleb128 0
	.uleb128 0
.LLSDACSE4596:
	.text
	.size	_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_, .-_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_
	.section	.rodata.str1.1
.LC36:
	.string	"SigmoidGrad: sig_out and dout must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_:
.LFB4597:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4597
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rdx, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB160:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE160:
	testb	%al, %al
	je	.L352
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC36(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB161:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE161:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB162:
	call	__cxa_throw@PLT
.L352:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE162:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB163:
	call	_ZN3ops11SigmoidGradC1EPNS_2OpES2_@PLT
.LEHE163:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB164:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L355:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L353:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L360
.L356:
	endbr64
	movq	%rax, %rbp
.L354:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L360:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE164:
	.cfi_endproc
.LFE4597:
	.section	.gcc_except_table
.LLSDA4597:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4597-.LLSDACSB4597
.LLSDACSB4597:
	.uleb128 .LEHB160-.LFB4597
	.uleb128 .LEHE160-.LEHB160
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB161-.LFB4597
	.uleb128 .LEHE161-.LEHB161
	.uleb128 .L355-.LFB4597
	.uleb128 0
	.uleb128 .LEHB162-.LFB4597
	.uleb128 .LEHE162-.LEHB162
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB163-.LFB4597
	.uleb128 .LEHE163-.LEHB163
	.uleb128 .L356-.LFB4597
	.uleb128 0
	.uleb128 .LEHB164-.LFB4597
	.uleb128 .LEHE164-.LEHB164
	.uleb128 0
	.uleb128 0
.LLSDACSE4597:
	.text
	.size	_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_, .-_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_
	.section	.rodata.str1.1
.LC37:
	.string	"softmax input must be a matrix"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder7softmaxEPNS_2OpE
	.type	_ZN3ops10OpsBuilder7softmaxEPNS_2OpE, @function
_ZN3ops10OpsBuilder7softmaxEPNS_2OpE:
.LFB4598:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4598
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	movq	%rsi, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
.LEHB165:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE165:
	cmpq	$2, %rax
	je	.L362
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC37(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB166:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE166:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB167:
	call	__cxa_throw@PLT
.L362:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE167:
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB168:
	call	_ZN3ops7SoftmaxC1EPNS_2OpE@PLT
.LEHE168:
	movq	(%r12), %rdi
	movq	%rbx, %rsi
.LEHB169:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L365:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L363:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L370
.L366:
	endbr64
	movq	%rax, %rbp
.L364:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L370:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE169:
	.cfi_endproc
.LFE4598:
	.section	.gcc_except_table
.LLSDA4598:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4598-.LLSDACSB4598
.LLSDACSB4598:
	.uleb128 .LEHB165-.LFB4598
	.uleb128 .LEHE165-.LEHB165
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB166-.LFB4598
	.uleb128 .LEHE166-.LEHB166
	.uleb128 .L365-.LFB4598
	.uleb128 0
	.uleb128 .LEHB167-.LFB4598
	.uleb128 .LEHE167-.LEHB167
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB168-.LFB4598
	.uleb128 .LEHE168-.LEHB168
	.uleb128 .L366-.LFB4598
	.uleb128 0
	.uleb128 .LEHB169-.LFB4598
	.uleb128 .LEHE169-.LEHB169
	.uleb128 0
	.uleb128 0
.LLSDACSE4598:
	.text
	.size	_ZN3ops10OpsBuilder7softmaxEPNS_2OpE, .-_ZN3ops10OpsBuilder7softmaxEPNS_2OpE
	.align 2
	.globl	_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_:
.LFB4599:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4599
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB170:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE170:
	cmpq	$2, %rax
	je	.L372
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC3(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB171:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE171:
	jmp	.L387
.L372:
	movq	%r12, %rdi
.LEHB172:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE172:
	cmpq	$2, %rax
	je	.L373
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC34(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB173:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE173:
	jmp	.L387
.L373:
	movq	%r12, %rdi
.LEHB174:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE174:
	testb	%al, %al
	je	.L374
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC35(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB175:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE175:
.L387:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB176:
	call	__cxa_throw@PLT
.L374:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE176:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB177:
	call	_ZN3ops19SoftmaxCrossEntropyC1EPNS_2OpES2_@PLT
.LEHE177:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB178:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L379:
	.cfi_restore_state
	endbr64
	jmp	.L389
.L380:
	endbr64
	jmp	.L389
.L381:
	endbr64
.L389:
	movq	%rax, %rbp
.L377:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L388
.L382:
	endbr64
	movq	%rax, %rbp
.L378:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L388:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE178:
	.cfi_endproc
.LFE4599:
	.section	.gcc_except_table
.LLSDA4599:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4599-.LLSDACSB4599
.LLSDACSB4599:
	.uleb128 .LEHB170-.LFB4599
	.uleb128 .LEHE170-.LEHB170
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB171-.LFB4599
	.uleb128 .LEHE171-.LEHB171
	.uleb128 .L379-.LFB4599
	.uleb128 0
	.uleb128 .LEHB172-.LFB4599
	.uleb128 .LEHE172-.LEHB172
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB173-.LFB4599
	.uleb128 .LEHE173-.LEHB173
	.uleb128 .L380-.LFB4599
	.uleb128 0
	.uleb128 .LEHB174-.LFB4599
	.uleb128 .LEHE174-.LEHB174
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB175-.LFB4599
	.uleb128 .LEHE175-.LEHB175
	.uleb128 .L381-.LFB4599
	.uleb128 0
	.uleb128 .LEHB176-.LFB4599
	.uleb128 .LEHE176-.LEHB176
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB177-.LFB4599
	.uleb128 .LEHE177-.LEHB177
	.uleb128 .L382-.LFB4599
	.uleb128 0
	.uleb128 .LEHB178-.LFB4599
	.uleb128 .LEHE178-.LEHB178
	.uleb128 0
	.uleb128 0
.LLSDACSE4599:
	.text
	.size	_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_, .-_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_
	.align 2
	.globl	_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_:
.LFB4600:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4600
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB179:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE179:
	cmpq	$2, %rax
	je	.L391
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC3(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB180:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE180:
	jmp	.L406
.L391:
	movq	%r12, %rdi
.LEHB181:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE181:
	cmpq	$2, %rax
	je	.L392
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC34(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB182:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE182:
	jmp	.L406
.L392:
	movq	%r12, %rdi
.LEHB183:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE183:
	testb	%al, %al
	je	.L393
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC35(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB184:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE184:
.L406:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB185:
	call	__cxa_throw@PLT
.L393:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE185:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB186:
	call	_ZN3ops23SoftmaxCrossEntropyGradC1EPNS_2OpES2_@PLT
.LEHE186:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB187:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L398:
	.cfi_restore_state
	endbr64
	jmp	.L408
.L399:
	endbr64
	jmp	.L408
.L400:
	endbr64
.L408:
	movq	%rax, %rbp
.L396:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L407
.L401:
	endbr64
	movq	%rax, %rbp
.L397:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L407:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE187:
	.cfi_endproc
.LFE4600:
	.section	.gcc_except_table
.LLSDA4600:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4600-.LLSDACSB4600
.LLSDACSB4600:
	.uleb128 .LEHB179-.LFB4600
	.uleb128 .LEHE179-.LEHB179
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB180-.LFB4600
	.uleb128 .LEHE180-.LEHB180
	.uleb128 .L398-.LFB4600
	.uleb128 0
	.uleb128 .LEHB181-.LFB4600
	.uleb128 .LEHE181-.LEHB181
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB182-.LFB4600
	.uleb128 .LEHE182-.LEHB182
	.uleb128 .L399-.LFB4600
	.uleb128 0
	.uleb128 .LEHB183-.LFB4600
	.uleb128 .LEHE183-.LEHB183
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB184-.LFB4600
	.uleb128 .LEHE184-.LEHB184
	.uleb128 .L400-.LFB4600
	.uleb128 0
	.uleb128 .LEHB185-.LFB4600
	.uleb128 .LEHE185-.LEHB185
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB186-.LFB4600
	.uleb128 .LEHE186-.LEHB186
	.uleb128 .L401-.LFB4600
	.uleb128 0
	.uleb128 .LEHB187-.LFB4600
	.uleb128 .LEHE187-.LEHB187
	.uleb128 0
	.uleb128 0
.LLSDACSE4600:
	.text
	.size	_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_, .-_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_
	.section	.rodata.str1.1
.LC38:
	.string	"TanhGrad: tanh_out and dout must have the same shape"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_
	.type	_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_, @function
_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_:
.LFB4601:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4601
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rdx, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB188:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE188:
	testb	%al, %al
	je	.L410
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC38(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB189:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE189:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB190:
	call	__cxa_throw@PLT
.L410:
	movl	$112, %edi
	call	_Znwm@PLT
.LEHE190:
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB191:
	call	_ZN3ops8TanhGradC1EPNS_2OpES2_@PLT
.LEHE191:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB192:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L413:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L411:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L418
.L414:
	endbr64
	movq	%rax, %rbp
.L412:
	movl	$112, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L418:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE192:
	.cfi_endproc
.LFE4601:
	.section	.gcc_except_table
.LLSDA4601:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4601-.LLSDACSB4601
.LLSDACSB4601:
	.uleb128 .LEHB188-.LFB4601
	.uleb128 .LEHE188-.LEHB188
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB189-.LFB4601
	.uleb128 .LEHE189-.LEHB189
	.uleb128 .L413-.LFB4601
	.uleb128 0
	.uleb128 .LEHB190-.LFB4601
	.uleb128 .LEHE190-.LEHB190
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB191-.LFB4601
	.uleb128 .LEHE191-.LEHB191
	.uleb128 .L414-.LFB4601
	.uleb128 0
	.uleb128 .LEHB192-.LFB4601
	.uleb128 .LEHE192-.LEHB192
	.uleb128 0
	.uleb128 0
.LLSDACSE4601:
	.text
	.size	_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_, .-_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_
	.section	.rodata.str1.1
.LC39:
	.string	"coeff must be a scalar"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_
	.type	_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_, @function
_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_:
.LFB4602:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4602
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%rdi, %r14
	movq	%rdx, %rdi
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rcx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
.LEHB193:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbp, %rdi
	movq	%rax, %rbx
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZN3opsneERKNS_5ShapeES2_@PLT
.LEHE193:
	testb	%al, %al
	je	.L420
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC25(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB194:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE194:
	jmp	.L431
.L420:
	movq	%r13, %rdi
.LEHB195:
	call	_ZNK3ops2Op9shape_getEv@PLT
	movq	%rax, %rdi
	call	_ZNK3ops5Shape5ndimsEv@PLT
.LEHE195:
	testq	%rax, %rax
	je	.L421
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC39(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB196:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE196:
.L431:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB197:
	call	__cxa_throw@PLT
.L421:
	movl	$120, %edi
	call	_Znwm@PLT
.LEHE197:
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB198:
	call	_ZN3ops6UpdateC1EPNS_8VariableEPNS_2OpES4_@PLT
.LEHE198:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
.LEHB199:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	%rbx, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L425:
	.cfi_restore_state
	endbr64
	jmp	.L433
.L426:
	endbr64
.L433:
	movq	%rax, %rbp
.L423:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L432
.L427:
	endbr64
	movq	%rax, %rbp
.L424:
	movl	$120, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L432:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE199:
	.cfi_endproc
.LFE4602:
	.section	.gcc_except_table
.LLSDA4602:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4602-.LLSDACSB4602
.LLSDACSB4602:
	.uleb128 .LEHB193-.LFB4602
	.uleb128 .LEHE193-.LEHB193
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB194-.LFB4602
	.uleb128 .LEHE194-.LEHB194
	.uleb128 .L425-.LFB4602
	.uleb128 0
	.uleb128 .LEHB195-.LFB4602
	.uleb128 .LEHE195-.LEHB195
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB196-.LFB4602
	.uleb128 .LEHE196-.LEHB196
	.uleb128 .L426-.LFB4602
	.uleb128 0
	.uleb128 .LEHB197-.LFB4602
	.uleb128 .LEHE197-.LEHB197
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB198-.LFB4602
	.uleb128 .LEHE198-.LEHB198
	.uleb128 .L427-.LFB4602
	.uleb128 0
	.uleb128 .LEHB199-.LFB4602
	.uleb128 .LEHE199-.LEHB199
	.uleb128 0
	.uleb128 0
.LLSDACSE4602:
	.text
	.size	_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_, .-_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_
	.section	.rodata.str1.1
.LC40:
	.string	"shape not fully defined"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb
	.type	_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb, @function
_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb:
.LFB4603:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4603
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	movq	%rsi, %rdi
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movl	%edx, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	pushq	%rcx
	.cfi_def_cfa_offset 48
.LEHB200:
	call	_ZNK3ops5Shape7definedEv@PLT
.LEHE200:
	testb	%al, %al
	jne	.L435
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC40(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB201:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE201:
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB202:
	call	__cxa_throw@PLT
.L435:
	movl	$160, %edi
	call	_Znwm@PLT
.LEHE202:
	movzbl	%bpl, %edx
	movq	%r12, %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB203:
	call	_ZN3ops8VariableC1ERKNS_5ShapeEb@PLT
.LEHE203:
	movq	0(%r13), %rdi
	movq	%rbx, %rsi
.LEHB204:
	call	_ZN3ops5Graph7add_varEPNS_8VariableE@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L438:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L436:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	jmp	.L443
.L439:
	endbr64
	movq	%rax, %rbp
.L437:
	movl	$160, %esi
	movq	%rbx, %rdi
	call	_ZdlPvm@PLT
.L443:
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE204:
	.cfi_endproc
.LFE4603:
	.section	.gcc_except_table
.LLSDA4603:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4603-.LLSDACSB4603
.LLSDACSB4603:
	.uleb128 .LEHB200-.LFB4603
	.uleb128 .LEHE200-.LEHB200
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB201-.LFB4603
	.uleb128 .LEHE201-.LEHB201
	.uleb128 .L438-.LFB4603
	.uleb128 0
	.uleb128 .LEHB202-.LFB4603
	.uleb128 .LEHE202-.LEHB202
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB203-.LFB4603
	.uleb128 .LEHE203-.LEHB203
	.uleb128 .L439-.LFB4603
	.uleb128 0
	.uleb128 .LEHB204-.LFB4603
	.uleb128 .LEHE204-.LEHB204
	.uleb128 0
	.uleb128 0
.LLSDACSE4603:
	.text
	.size	_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb, .-_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb
	.align 2
	.globl	_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE
	.type	_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE, @function
_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE:
.LFB4604:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4604
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$112, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%rsi, 8(%rsp)
.LEHB205:
	call	_Znwm@PLT
.LEHE205:
	movq	8(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB206:
	call	_ZN3ops11VectSigmoidC1EPNS_2OpE@PLT
.LEHE206:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB207:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L446:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L445:
	movq	%rbx, %rdi
	movl	$112, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE207:
	.cfi_endproc
.LFE4604:
	.section	.gcc_except_table
.LLSDA4604:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4604-.LLSDACSB4604
.LLSDACSB4604:
	.uleb128 .LEHB205-.LFB4604
	.uleb128 .LEHE205-.LEHB205
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB206-.LFB4604
	.uleb128 .LEHE206-.LEHB206
	.uleb128 .L446-.LFB4604
	.uleb128 0
	.uleb128 .LEHB207-.LFB4604
	.uleb128 .LEHE207-.LEHB207
	.uleb128 0
	.uleb128 0
.LLSDACSE4604:
	.text
	.size	_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE, .-_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE
	.align 2
	.globl	_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE
	.type	_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE, @function
_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE:
.LFB4605:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4605
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$112, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%rsi, 8(%rsp)
.LEHB208:
	call	_Znwm@PLT
.LEHE208:
	movq	8(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB209:
	call	_ZN3ops8VectReluC1EPNS_2OpE@PLT
.LEHE209:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB210:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L452:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L451:
	movq	%rbx, %rdi
	movl	$112, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE210:
	.cfi_endproc
.LFE4605:
	.section	.gcc_except_table
.LLSDA4605:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4605-.LLSDACSB4605
.LLSDACSB4605:
	.uleb128 .LEHB208-.LFB4605
	.uleb128 .LEHE208-.LEHB208
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB209-.LFB4605
	.uleb128 .LEHE209-.LEHB209
	.uleb128 .L452-.LFB4605
	.uleb128 0
	.uleb128 .LEHB210-.LFB4605
	.uleb128 .LEHE210-.LEHB210
	.uleb128 0
	.uleb128 0
.LLSDACSE4605:
	.text
	.size	_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE, .-_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE
	.align 2
	.globl	_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf
	.type	_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf, @function
_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf:
.LFB4606:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4606
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$120, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%rsi, 8(%rsp)
	movss	%xmm0, 4(%rsp)
.LEHB211:
	call	_Znwm@PLT
.LEHE211:
	movss	4(%rsp), %xmm0
	movq	8(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB212:
	call	_ZN3ops13VectReluLeakyC1EPNS_2OpEf@PLT
.LEHE212:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB213:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L458:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L457:
	movq	%rbx, %rdi
	movl	$120, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE213:
	.cfi_endproc
.LFE4606:
	.section	.gcc_except_table
.LLSDA4606:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4606-.LLSDACSB4606
.LLSDACSB4606:
	.uleb128 .LEHB211-.LFB4606
	.uleb128 .LEHE211-.LEHB211
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB212-.LFB4606
	.uleb128 .LEHE212-.LEHB212
	.uleb128 .L458-.LFB4606
	.uleb128 0
	.uleb128 .LEHB213-.LFB4606
	.uleb128 .LEHE213-.LEHB213
	.uleb128 0
	.uleb128 0
.LLSDACSE4606:
	.text
	.size	_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf, .-_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf
	.align 2
	.globl	_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE
	.type	_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE, @function
_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE:
.LFB4607:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4607
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	movl	$112, %edi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%rsi, 8(%rsp)
.LEHB214:
	call	_Znwm@PLT
.LEHE214:
	movq	8(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB215:
	call	_ZN3ops8VectTanhC1EPNS_2OpE@PLT
.LEHE215:
	movq	0(%rbp), %rdi
	movq	%rbx, %rsi
.LEHB216:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L464:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L463:
	movq	%rbx, %rdi
	movl	$112, %esi
	call	_ZdlPvm@PLT
	movq	%rbp, %rdi
	call	_Unwind_Resume@PLT
.LEHE216:
	.cfi_endproc
.LFE4607:
	.section	.gcc_except_table
.LLSDA4607:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4607-.LLSDACSB4607
.LLSDACSB4607:
	.uleb128 .LEHB214-.LFB4607
	.uleb128 .LEHE214-.LEHB214
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB215-.LFB4607
	.uleb128 .LEHE215-.LEHB215
	.uleb128 .L464-.LFB4607
	.uleb128 0
	.uleb128 .LEHB216-.LFB4607
	.uleb128 .LEHE216-.LEHB216
	.uleb128 0
	.uleb128 0
.LLSDACSE4607:
	.text
	.size	_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE, .-_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB4633:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	movq	%rax, %rdi
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rdx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE4633:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.text._ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev,"axG",@progbits,_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED5Ev,comdat
	.align 2
	.weak	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev
	.type	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev, @function
_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev:
.LFB5184:
	.cfi_startproc
	endbr64
	movq	(%rdi), %rax
	testq	%rax, %rax
	je	.L470
	movq	16(%rdi), %rsi
	movq	%rax, %rdi
	subq	%rax, %rsi
	jmp	_ZdlPvm@PLT
.L470:
	ret
	.cfi_endproc
.LFE5184:
	.size	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev, .-_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev
	.weak	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED1Ev
	.set	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED1Ev,_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev
	.section	.rodata.str1.1
.LC41:
	.string	"seq: ops can't be empty"
	.text
	.align 2
	.globl	_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE
	.type	_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE, @function
_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE:
.LFB4594:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4594
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	subq	$40, %rsp
	.cfi_def_cfa_offset 80
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	movq	(%rsi), %rax
	cmpq	%rax, 8(%rsi)
	jne	.L473
	movl	$16, %edi
	call	__cxa_allocate_exception@PLT
	leaq	.LC41(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, %rbx
.LEHB217:
	call	_ZNSt13runtime_errorC1EPKc@PLT
.LEHE217:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L490
	movq	_ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx
	leaq	_ZTISt13runtime_error(%rip), %rsi
	movq	%rbx, %rdi
.LEHB218:
	call	__cxa_throw@PLT
.L473:
	movq	%rdi, %r12
	movl	$112, %edi
	movq	%rsi, %rbx
	call	_Znwm@PLT
.LEHE218:
	movq	8(%rbx), %r13
	movq	%rax, %rbp
	xorl	%eax, %eax
	movq	%rax, (%rsp)
	movq	%rax, 8(%rsp)
	movq	%rax, 16(%rsp)
	subq	(%rbx), %r13
	je	.L486
	movabsq	$9223372036854775800, %rax
	cmpq	%r13, %rax
	jnb	.L476
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L490
.LEHB219:
	call	_ZSt28__throw_bad_array_new_lengthv@PLT
.L476:
	movq	%r13, %rdi
	call	_Znwm@PLT
.LEHE219:
	movq	%rax, %rcx
	jmp	.L475
.L486:
	xorl	%ecx, %ecx
.L475:
	movq	(%rbx), %rsi
	movq	8(%rbx), %rbx
	addq	%rcx, %r13
	movq	%rcx, (%rsp)
	movq	%rcx, 8(%rsp)
	subq	%rsi, %rbx
	movq	%r13, 16(%rsp)
	cmpq	$8, %rbx
	jle	.L478
	movq	%rcx, %rdi
	movq	%rbx, %rdx
	call	memmove@PLT
	movq	%rax, %rcx
	jmp	.L479
.L478:
	jne	.L479
	movq	(%rsi), %rax
	movq	%rax, (%rcx)
.L479:
	movq	%rsp, %r13
	addq	%rbx, %rcx
	movq	%rbp, %rdi
	movq	%r13, %rsi
	movq	%rcx, 8(%rsp)
.LEHB220:
	call	_ZN3ops3SeqC1ESt6vectorIPNS_2OpESaIS3_EE@PLT
.LEHE220:
	movq	%r13, %rdi
	call	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev
	movq	(%r12), %rdi
	movq	%rbp, %rsi
.LEHB221:
	call	_ZN3ops5Graph3addEPNS_2OpE@PLT
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	je	.L485
	jmp	.L490
.L487:
	endbr64
	movq	%rax, %rbp
.L480:
	movq	%rbx, %rdi
	call	__cxa_free_exception@PLT
	movq	%rbp, %rdi
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	je	.L493
	jmp	.L490
.L489:
	endbr64
	movq	%rax, %rbx
.L482:
	movq	%r13, %rdi
	call	_ZNSt12_Vector_baseIPN3ops2OpESaIS2_EED2Ev
	jmp	.L483
.L488:
	endbr64
	movq	%rax, %rbx
.L483:
	movq	%rbp, %rdi
	movl	$112, %esi
	call	_ZdlPvm@PLT
	movq	%rbx, %rdi
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L490
.L493:
	call	_Unwind_Resume@PLT
.LEHE221:
.L490:
	call	__stack_chk_fail@PLT
.L485:
	addq	$40, %rsp
	.cfi_def_cfa_offset 40
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4594:
	.section	.gcc_except_table
.LLSDA4594:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4594-.LLSDACSB4594
.LLSDACSB4594:
	.uleb128 .LEHB217-.LFB4594
	.uleb128 .LEHE217-.LEHB217
	.uleb128 .L487-.LFB4594
	.uleb128 0
	.uleb128 .LEHB218-.LFB4594
	.uleb128 .LEHE218-.LEHB218
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB219-.LFB4594
	.uleb128 .LEHE219-.LEHB219
	.uleb128 .L488-.LFB4594
	.uleb128 0
	.uleb128 .LEHB220-.LFB4594
	.uleb128 .LEHE220-.LEHB220
	.uleb128 .L489-.LFB4594
	.uleb128 0
	.uleb128 .LEHB221-.LFB4594
	.uleb128 .LEHE221-.LEHB221
	.uleb128 0
	.uleb128 0
.LLSDACSE4594:
	.text
	.size	_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE, .-_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.local	_ZGVZN3ops10OpsBuilder8instanceEvE7builder
	.comm	_ZGVZN3ops10OpsBuilder8instanceEvE7builder,8,8
	.local	_ZZN3ops10OpsBuilder8instanceEvE7builder
	.comm	_ZZN3ops10OpsBuilder8instanceEvE7builder,8,8
	.hidden	DW.ref.__gxx_personality_v0
	.weak	DW.ref.__gxx_personality_v0
	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
	.align 8
	.type	DW.ref.__gxx_personality_v0, @object
	.size	DW.ref.__gxx_personality_v0, 8
DW.ref.__gxx_personality_v0:
	.quad	__gxx_personality_v0
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:


#include <hip/hip_runtime.h>
#include "ops-builder.hh"
#include <stdexcept>


#include "graph.hh"
#include "add.hh"
#include "adam-update.hh"
#include "argmax-accuracy.hh"
#include "input.hh"
#include "leaky-relu-grad.hh"
#include "log-softmax.hh"
#include "mat-mat-mul.hh"
#include "mat-mul-add.hh"
#include "mat-rvect-add.hh"
#include "mat-sum.hh"
#include "moment-update.hh"
#include "mse.hh"
#include "mse-grad.hh"
#include "relu-grad.hh"
#include "seq.hh"
#include "sigmoid-cross-entropy.hh"
#include "sigmoid-cross-entropy-grad.hh"
#include "sigmoid-grad.hh"
#include "softmax.hh"
#include "softmax-cross-entropy.hh"
#include "softmax-cross-entropy-grad.hh"
#include "tanh-grad.hh"
#include "update.hh"
#include "variable.hh"
#include "vect-sigmoid.hh"
#include "conv2d.hh"
#include "conv2d-bias-add.hh"
#include "conv2d-input-grad.hh"
#include "conv2d-kernel-grad.hh"
#include "conv2d-bias-add-grad.hh"
#include "conv2d-transpose.hh"
#include "conv2d-transpose-input-grad.hh"
#include "conv2d-transpose-kernel-grad.hh"
#include "vect-relu.hh"
#include "vect-relu-leaky.hh"
#include "vect-tanh.hh"
#include "reshape.hh"


namespace ops
{

    OpsBuilder& OpsBuilder::instance()
    {
        static OpsBuilder builder;
        return builder;
    }

    OpsBuilder::OpsBuilder()
        : graph_(Graph::instance())
    {}


    Add* OpsBuilder::add(Op* left, Op* right)
    {
        if (left->shape_get() != right->shape_get())
            throw std::runtime_error {"add: left and right must have the same shape"};

        auto res = new Add(left, right);
        graph_.add(res);
        return res;
    }
    
    AdamUpdate* OpsBuilder::adam_update(Variable* var, Op* m, Op* v,
                                        dbl_t learning_rate,
                                        dbl_t beta1, dbl_t beta2, dbl_t eps)
    {
        if (var->shape_get() != m->shape_get())
            throw std::runtime_error {"var and m must have the same shape"};
        if (var->shape_get() != v->shape_get())
            throw std::runtime_error {"var and v must have the same shape"};

        auto res = new AdamUpdate(var, m, v, learning_rate, beta1, beta2, eps);
        graph_.add(res);
        return res;
    }

    ArgmaxAccuracy* OpsBuilder::argmax_accuracy(Op* y, Op* y_hat)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (y_hat->shape_get().ndims() != 2)
            throw std::runtime_error {"y_hat must be a matrix"};
        if (y->shape_get() != y_hat->shape_get())
            throw std::runtime_error {"y and y_hat must have the same shape"};

        auto res = new ArgmaxAccuracy(y, y_hat);
        graph_.add(res);
        return res;
    }

    Conv2D* OpsBuilder::conv2d(Op* input, Op* kernel, const int* strides)
    {
        if (input->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2D:input must be a 4D tensor"};
        if (kernel->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2D:kernel must be a 4D tensor"};
        auto res = new Conv2D(input, kernel, strides);
        graph_.add(res);
        return res;
    }

    Conv2DBiasAdd* OpsBuilder::conv2d_bias_add(Op* z, Op* bias)
    {
        if (z->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2DBiasAdd:z must be a 4D tensor"};
        if (bias->shape_get().ndims() != 1)
            throw std::runtime_error {"Conv2DBiasAdd:bias must be a 1D array"};
        if (z->shape_get()[3] != bias->shape_get()[0])
            throw std::runtime_error {"Conv2DBiasAdd:z and bias shape are not corresponding"};
        auto res = new Conv2DBiasAdd(z, bias);
        graph_.add(res);
        return res;
    }

    Conv2DBiasAddGrad* OpsBuilder::conv2d_bias_add_grad(Op* z)
    {
        if (z->shape_get().ndims() != 4)
            throw std::runtime_error {"Conv2DBiasAddGrad:z must be a 4D tensor"};
        auto res = new Conv2DBiasAddGrad(z);
        graph_.add(res);
        return res;
    }

    Conv2DInputGrad* OpsBuilder::conv2d_input_grad(Op* y, Op* kernel, const int* strides, const int* input_size)
    {
        auto res = new Conv2DInputGrad(y, kernel, strides, input_size);
        graph_.add(res);
        return res;
    }

    Conv2DKernelGrad* OpsBuilder::conv2d_kernel_grad(Op* y, Op* input, const int* strides, const int* kernel_size, const int* padded_size)
    {
        auto res = new Conv2DKernelGrad(y, input, strides, kernel_size, padded_size);
        graph_.add(res);
        return res;
    }

    Conv2DTranspose* OpsBuilder::conv2d_transpose(Op* input, Op* kernel, const int* out_size, const int* strides)
    {
        auto res = new Conv2DTranspose(input, kernel, out_size, strides);
        graph_.add(res);
        return res;
    }

    Conv2DTransposeInputGrad* OpsBuilder::conv2d_transpose_input_grad(Op* y, Op* kernel, const int* strides, const int* input_size)
    {
        auto res = new Conv2DTransposeInputGrad(y, kernel, strides, input_size);
        graph_.add(res);
        return res;
    }

    Conv2DTransposeKernelGrad* OpsBuilder::conv2d_transpose_kernel_grad(Op* y, Op* input, const int* strides, const int* kernel_size)
    {
        auto res = new Conv2DTransposeKernelGrad(y, input, strides, kernel_size);
        graph_.add(res);
        return res;
    }


    Input* OpsBuilder::input(const Shape& shape)
    {
        auto res = new Input(shape);
        graph_.add(res);
        return res;
    }

    LeakyReluGrad* OpsBuilder::leaky_relu_grad(Op* z, Op* dout, dbl_t alpha)
    {
        if (z->shape_get() != dout->shape_get())
            throw std::runtime_error {"LeakyReluGrad: z and dout must have the same shape"};

        auto res = new LeakyReluGrad(z, dout, alpha);
        graph_.add(res);
        return res;
    }

    LogSoftmax* OpsBuilder::log_softmax(Op* arg)
    {
        if (arg->shape_get().ndims() != 2)
            throw std::runtime_error{"log softmax input must be a matrix"};

        auto res = new LogSoftmax(arg);
        graph_.add(res);
        return res;
    }

    MatMatMul* OpsBuilder::mat_mat_mul(Op* left, Op* right, bool left_tr, bool right_tr)
    {
        if (left->shape_get().ndims() != 2)
            throw std::runtime_error{"left operand must be a matrix"};
        if (right->shape_get().ndims() != 2)
            throw std::runtime_error{"right operand must be a matrix"};
        if (left->shape_get()[!left_tr] != right->shape_get()[right_tr])
            throw std::runtime_error{"left[1] and right[0] differ"};

        auto res = new MatMatMul(left, right, left_tr, right_tr);
        graph_.add(res);
        return res;
    }

    MatMulAdd* OpsBuilder::mat_mul_add(Op* x, Op* w, Op* b)
    {
        if (x->shape_get().ndims() != 2)
            throw std::runtime_error{"x must be a matrix"};
        if (w->shape_get().ndims() != 2)
            throw std::runtime_error{"w must be a matrix"};
        if (b->shape_get().ndims() != 1)
            throw std::runtime_error{"b must be a vector"};
        if (x->shape_get()[1] != w->shape_get()[0])
            throw std::runtime_error{"x[1] and w[0] differ"};
        if (w->shape_get()[1] != b->shape_get()[0])
            throw std::runtime_error{"w[1] and b[0] differ"};

        auto res = new MatMulAdd(x, w, b);
        graph_.add(res);
        return res;
    }

    MatRvectAdd* OpsBuilder::mat_rvect_add(Op* left, Op* right)
    {
        if (left->shape_get().ndims() != 2)
            throw std::runtime_error{"left operand must be a matrix"};
        if (right->shape_get().ndims() != 1)
            throw std::runtime_error{"right operand must be a vector"};
        if (left->shape_get()[1] != right->shape_get()[0])
            throw std::runtime_error{"left[1] and right[0] differ"};

        auto res = new MatRvectAdd(left, right);
        graph_.add(res);
        return res;
    }

    MatSum* OpsBuilder::mat_sum(Op* arg, std::size_t axis)
    {
        if (arg->shape_get().ndims() != 2)
            throw std::runtime_error {"arg must be a matrix"};
        if (axis >= 2)
            throw std::runtime_error {"axis must be 0 or 1"};

        auto res = new MatSum(arg, axis);
        graph_.add(res);
        return res;
    }

    MomentUpdate* OpsBuilder::moment_update(Variable* var, Op* dt,
                                            dbl_t coeff1, dbl_t coeff2, bool sq_update)
    {
        if (var->shape_get() != dt->shape_get())
            throw std::runtime_error {"var and dt must have the same shape"};

        auto res = new MomentUpdate(var, dt, coeff1, coeff2, sq_update);
        graph_.add(res);
        return res;
    }

    MSE* OpsBuilder::mse(Op* y, Op* y_hat)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"MSE:y must be a matrix"};
        if (y_hat->shape_get().ndims() != 2)
            throw std::runtime_error {"MSE:y_hat must be a matrix"};
        if (y->shape_get() != y_hat->shape_get())
            throw std::runtime_error {"MSE: y and y_hat must have the same shape"};

        auto res = new MSE(y, y_hat);
        graph_.add(res);
        return res;
    }

    Reshape* OpsBuilder::reshape(Op* arg, const Shape& shape)
    {
      auto& arg_shape = arg->shape_get();
      if (shape.defined() && shape.total() != arg_shape.total())
          throw std::runtime_error {"Reshape:"};
      //    if (! shape.defined() && (arg_shape.total() % (- shape.total()) != 0))
      //    throw std::runtime_error {"Reshape:"};
      // nb -1 = max 1 ?? has to be checked
      auto res = new Reshape(arg, shape);
      graph_.add(res);
      return res;
    }

    MSEGrad* OpsBuilder::mse_grad(Op* y, Op* y_hat)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"MSEGrad: y must be a matrix"};
        if (y_hat->shape_get().ndims() != 2)
            throw std::runtime_error {"MSEGrad: y_hat must be a matrix"};
        if (y->shape_get() != y_hat->shape_get())
            throw std::runtime_error {"MSEGrad: y and y_hat must have the same shape"};

        auto res = new MSEGrad(y, y_hat);
        graph_.add(res);
        return res;
    }

    ReluGrad* OpsBuilder::relu_grad(Op* z, Op* dout)
    {
        if (z->shape_get() != dout->shape_get())
            throw std::runtime_error {"ReluGrad: z and dout must have the same shape"};

        auto res = new ReluGrad(z, dout);
        graph_.add(res);
        return res;
    }

    Seq* OpsBuilder::seq(const std::vector<Op*>& ops)
    {
        if (ops.empty())
            throw std::runtime_error {"seq: ops can't be empty"};
        auto res = new Seq(ops);
        graph_.add(res);
        return res;
    }

    SigmoidCrossEntropy* OpsBuilder::sigmoid_cross_entropy(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
            
        auto res = new SigmoidCrossEntropy(y, logits);
        graph_.add(res);
        return res;
    }

    SigmoidCrossEntropyGrad* OpsBuilder::sigmoid_cross_entropy_grad(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
        
        auto res = new SigmoidCrossEntropyGrad(y, logits);
        graph_.add(res);
        return res;
    }

    SigmoidGrad* OpsBuilder::sigmoid_grad(Op* sig_out, Op* dout)
    {
        if (sig_out->shape_get() != dout->shape_get())
            throw std::runtime_error {"SigmoidGrad: sig_out and dout must have the same shape"};

        auto res = new SigmoidGrad(sig_out, dout);
        graph_.add(res);
        return res;
    }
    
    Softmax* OpsBuilder::softmax(Op* arg)
    {
        if (arg->shape_get().ndims() != 2)
            throw std::runtime_error{"softmax input must be a matrix"};

        auto res = new Softmax(arg);
        graph_.add(res);
        return res;
    }

    SoftmaxCrossEntropy* OpsBuilder::softmax_cross_entropy(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
            
        auto res = new SoftmaxCrossEntropy(y, logits);
        graph_.add(res);
        return res;
    }

    SoftmaxCrossEntropyGrad* OpsBuilder::softmax_cross_entropy_grad(Op* y, Op* logits)
    {
        if (y->shape_get().ndims() != 2)
            throw std::runtime_error {"y must be a matrix"};
        if (logits->shape_get().ndims() != 2)
            throw std::runtime_error {"logits must be a matrix"};
        if (y->shape_get() != logits->shape_get())
            throw std::runtime_error {"y and logits must have the same shape"};
        
        auto res = new SoftmaxCrossEntropyGrad(y, logits);
        graph_.add(res);
        return res;
    }

    TanhGrad* OpsBuilder::tanh_grad(Op* tanh_out, Op* dout)
    {
        if (tanh_out->shape_get() != dout->shape_get())
            throw std::runtime_error {"TanhGrad: tanh_out and dout must have the same shape"};

        auto res = new TanhGrad(tanh_out, dout);
        graph_.add(res);
        return res;
    }

    Update* OpsBuilder::update(Variable* var, Op* dt, Op* coeff)
    {
        if (var->shape_get() != dt->shape_get())
            throw std::runtime_error {"var and dt must have the same shape"};
        if (coeff->shape_get().ndims())
            throw std::runtime_error {"coeff must be a scalar"};

        auto res = new Update(var, dt, coeff);
        graph_.add(res);
        return res;
    }

    Variable* OpsBuilder::variable(const Shape& shape, bool trainable)
    {
        if (!shape.defined())
            throw std::runtime_error{"shape not fully defined"};
        auto res = new Variable(shape, trainable);
        graph_.add_var(res);
        return res;
    }

    VectSigmoid* OpsBuilder::vect_sigmoid(Op* arg)
    {
        auto res = new VectSigmoid(arg);
        graph_.add(res);
        return res;
    }

    VectRelu* OpsBuilder::vect_relu(Op* arg)
    {
        auto res = new VectRelu(arg);
        graph_.add(res);
        return res;
    }

    VectReluLeaky* OpsBuilder::vect_relu_leaky(Op* arg, const dbl_t alpha)
    {
        auto res = new VectReluLeaky(arg, alpha);
        graph_.add(res);
        return res;
    }

    VectTanh* OpsBuilder::vect_tanh(Op* arg)
    {
        auto res = new VectTanh(arg);
        graph_.add(res);
        return res;
    }
}

	.text
	.file	"ops-builder.hip"
                                        # Start of file scope inline assembly
	.globl	_ZSt21ios_base_library_initv

                                        # End of file scope inline assembly
	.globl	_ZN3ops10OpsBuilder8instanceEv  # -- Begin function _ZN3ops10OpsBuilder8instanceEv
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder8instanceEv,@function
_ZN3ops10OpsBuilder8instanceEv:         # @_ZN3ops10OpsBuilder8instanceEv
.Lfunc_begin0:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception0
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movb	_ZGVZN3ops10OpsBuilder8instanceEvE7builder(%rip), %al
	testb	%al, %al
	je	.LBB0_1
.LBB0_4:
	movl	$_ZZN3ops10OpsBuilder8instanceEvE7builder, %eax
	popq	%rbx
	.cfi_def_cfa_offset 8
	retq
.LBB0_1:
	.cfi_def_cfa_offset 16
	movl	$_ZGVZN3ops10OpsBuilder8instanceEvE7builder, %edi
	callq	__cxa_guard_acquire
	testl	%eax, %eax
	je	.LBB0_4
# %bb.2:
.Ltmp0:
	callq	_ZN3ops5Graph8instanceEv
.Ltmp1:
# %bb.3:
	movq	%rax, _ZZN3ops10OpsBuilder8instanceEvE7builder(%rip)
	movl	$_ZGVZN3ops10OpsBuilder8instanceEvE7builder, %edi
	callq	__cxa_guard_release
	jmp	.LBB0_4
.LBB0_5:
.Ltmp2:
	movq	%rax, %rbx
	movl	$_ZGVZN3ops10OpsBuilder8instanceEvE7builder, %edi
	callq	__cxa_guard_abort
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end0:
	.size	_ZN3ops10OpsBuilder8instanceEv, .Lfunc_end0-_ZN3ops10OpsBuilder8instanceEv
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table0:
.Lexception0:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end0-.Lcst_begin0
.Lcst_begin0:
	.uleb128 .Ltmp0-.Lfunc_begin0           # >> Call Site 1 <<
	.uleb128 .Ltmp1-.Ltmp0                  #   Call between .Ltmp0 and .Ltmp1
	.uleb128 .Ltmp2-.Lfunc_begin0           #     jumps to .Ltmp2
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1-.Lfunc_begin0           # >> Call Site 2 <<
	.uleb128 .Lfunc_end0-.Ltmp1             #   Call between .Ltmp1 and .Lfunc_end0
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end0:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilderC2Ev         # -- Begin function _ZN3ops10OpsBuilderC2Ev
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilderC2Ev,@function
_ZN3ops10OpsBuilderC2Ev:                # @_ZN3ops10OpsBuilderC2Ev
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movq	%rdi, %rbx
	callq	_ZN3ops5Graph8instanceEv
	movq	%rax, (%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end1:
	.size	_ZN3ops10OpsBuilderC2Ev, .Lfunc_end1-_ZN3ops10OpsBuilderC2Ev
	.cfi_endproc
                                        # -- End function
	.globl	_ZN3ops10OpsBuilder3addEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder3addEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder3addEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder3addEPNS_2OpES2_:    # @_ZN3ops10OpsBuilder3addEPNS_2OpES2_
.Lfunc_begin1:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception1
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB2_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp3:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops3AddC1EPNS_2OpES2_
.Ltmp4:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB2_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp6:
	movl	$.L.str, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp7:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB2_3:
.Ltmp8:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB2_7
.LBB2_6:
.Ltmp5:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB2_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end2:
	.size	_ZN3ops10OpsBuilder3addEPNS_2OpES2_, .Lfunc_end2-_ZN3ops10OpsBuilder3addEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table2:
.Lexception1:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end1-.Lcst_begin1
.Lcst_begin1:
	.uleb128 .Lfunc_begin1-.Lfunc_begin1    # >> Call Site 1 <<
	.uleb128 .Ltmp3-.Lfunc_begin1           #   Call between .Lfunc_begin1 and .Ltmp3
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3-.Lfunc_begin1           # >> Call Site 2 <<
	.uleb128 .Ltmp4-.Ltmp3                  #   Call between .Ltmp3 and .Ltmp4
	.uleb128 .Ltmp5-.Lfunc_begin1           #     jumps to .Ltmp5
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp4-.Lfunc_begin1           # >> Call Site 3 <<
	.uleb128 .Ltmp6-.Ltmp4                  #   Call between .Ltmp4 and .Ltmp6
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp6-.Lfunc_begin1           # >> Call Site 4 <<
	.uleb128 .Ltmp7-.Ltmp6                  #   Call between .Ltmp6 and .Ltmp7
	.uleb128 .Ltmp8-.Lfunc_begin1           #     jumps to .Ltmp8
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp7-.Lfunc_begin1           # >> Call Site 5 <<
	.uleb128 .Lfunc_end2-.Ltmp7             #   Call between .Ltmp7 and .Lfunc_end2
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end1:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff # -- Begin function _ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff,@function
_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff: # @_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff
.Lfunc_begin2:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception2
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r13
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$16, %rsp
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movss	%xmm3, 12(%rsp)                 # 4-byte Spill
	movss	%xmm2, 8(%rsp)                  # 4-byte Spill
	movss	%xmm1, 4(%rsp)                  # 4-byte Spill
	movss	%xmm0, (%rsp)                   # 4-byte Spill
	movq	%rcx, %r14
	movq	%rdx, %r15
	movq	%rsi, %r12
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r13
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r13, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB3_1
# %bb.5:
	movq	%r12, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r13
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r13, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB3_6
# %bb.8:
	movl	$144, %edi
	callq	_Znwm
	movq	%rax, %r13
.Ltmp9:
	movq	%rax, %rdi
	movq	%r12, %rsi
	movq	%r15, %rdx
	movq	%r14, %rcx
	movss	(%rsp), %xmm0                   # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	4(%rsp), %xmm1                  # 4-byte Reload
                                        # xmm1 = mem[0],zero,zero,zero
	movss	8(%rsp), %xmm2                  # 4-byte Reload
                                        # xmm2 = mem[0],zero,zero,zero
	movss	12(%rsp), %xmm3                 # 4-byte Reload
                                        # xmm3 = mem[0],zero,zero,zero
	callq	_ZN3ops10AdamUpdateC1EPNS_8VariableEPNS_2OpES4_ffff
.Ltmp10:
# %bb.9:
	movq	(%rbx), %rdi
	movq	%r13, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r13, %rax
	addq	$16, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB3_1:
	.cfi_def_cfa_offset 64
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp15:
	movl	$.L.str.1, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp16:
	jmp	.LBB3_2
.LBB3_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp12:
	movl	$.L.str.2, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp13:
.LBB3_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB3_7:
.Ltmp14:
	jmp	.LBB3_4
.LBB3_3:
.Ltmp17:
.LBB3_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB3_11
.LBB3_10:
.Ltmp11:
	movq	%rax, %rbx
	movq	%r13, %rdi
	callq	_ZdlPv
.LBB3_11:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end3:
	.size	_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff, .Lfunc_end3-_ZN3ops10OpsBuilder11adam_updateEPNS_8VariableEPNS_2OpES4_ffff
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table3:
.Lexception2:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end2-.Lcst_begin2
.Lcst_begin2:
	.uleb128 .Lfunc_begin2-.Lfunc_begin2    # >> Call Site 1 <<
	.uleb128 .Ltmp9-.Lfunc_begin2           #   Call between .Lfunc_begin2 and .Ltmp9
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp9-.Lfunc_begin2           # >> Call Site 2 <<
	.uleb128 .Ltmp10-.Ltmp9                 #   Call between .Ltmp9 and .Ltmp10
	.uleb128 .Ltmp11-.Lfunc_begin2          #     jumps to .Ltmp11
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp10-.Lfunc_begin2          # >> Call Site 3 <<
	.uleb128 .Ltmp15-.Ltmp10                #   Call between .Ltmp10 and .Ltmp15
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp15-.Lfunc_begin2          # >> Call Site 4 <<
	.uleb128 .Ltmp16-.Ltmp15                #   Call between .Ltmp15 and .Ltmp16
	.uleb128 .Ltmp17-.Lfunc_begin2          #     jumps to .Ltmp17
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp16-.Lfunc_begin2          # >> Call Site 5 <<
	.uleb128 .Ltmp12-.Ltmp16                #   Call between .Ltmp16 and .Ltmp12
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp12-.Lfunc_begin2          # >> Call Site 6 <<
	.uleb128 .Ltmp13-.Ltmp12                #   Call between .Ltmp12 and .Ltmp13
	.uleb128 .Ltmp14-.Lfunc_begin2          #     jumps to .Ltmp14
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp13-.Lfunc_begin2          # >> Call Site 7 <<
	.uleb128 .Lfunc_end3-.Ltmp13            #   Call between .Ltmp13 and .Lfunc_end3
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end2:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_: # @_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_
.Lfunc_begin3:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception3
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB4_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB4_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB4_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp24:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops14ArgmaxAccuracyC1EPNS_2OpES2_
.Ltmp25:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB4_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp18:
	movl	$.L.str.3, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp19:
	jmp	.LBB4_2
.LBB4_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp21:
	movl	$.L.str.4, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp22:
	jmp	.LBB4_2
.LBB4_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp27:
	movl	$.L.str.5, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp28:
.LBB4_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB4_10:
.Ltmp29:
	jmp	.LBB4_4
.LBB4_7:
.Ltmp23:
	jmp	.LBB4_4
.LBB4_3:
.Ltmp20:
.LBB4_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB4_14
.LBB4_13:
.Ltmp26:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB4_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end4:
	.size	_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_, .Lfunc_end4-_ZN3ops10OpsBuilder15argmax_accuracyEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table4:
.Lexception3:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end3-.Lcst_begin3
.Lcst_begin3:
	.uleb128 .Lfunc_begin3-.Lfunc_begin3    # >> Call Site 1 <<
	.uleb128 .Ltmp24-.Lfunc_begin3          #   Call between .Lfunc_begin3 and .Ltmp24
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp24-.Lfunc_begin3          # >> Call Site 2 <<
	.uleb128 .Ltmp25-.Ltmp24                #   Call between .Ltmp24 and .Ltmp25
	.uleb128 .Ltmp26-.Lfunc_begin3          #     jumps to .Ltmp26
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp25-.Lfunc_begin3          # >> Call Site 3 <<
	.uleb128 .Ltmp18-.Ltmp25                #   Call between .Ltmp25 and .Ltmp18
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp18-.Lfunc_begin3          # >> Call Site 4 <<
	.uleb128 .Ltmp19-.Ltmp18                #   Call between .Ltmp18 and .Ltmp19
	.uleb128 .Ltmp20-.Lfunc_begin3          #     jumps to .Ltmp20
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp19-.Lfunc_begin3          # >> Call Site 5 <<
	.uleb128 .Ltmp21-.Ltmp19                #   Call between .Ltmp19 and .Ltmp21
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp21-.Lfunc_begin3          # >> Call Site 6 <<
	.uleb128 .Ltmp22-.Ltmp21                #   Call between .Ltmp21 and .Ltmp22
	.uleb128 .Ltmp23-.Lfunc_begin3          #     jumps to .Ltmp23
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp22-.Lfunc_begin3          # >> Call Site 7 <<
	.uleb128 .Ltmp27-.Ltmp22                #   Call between .Ltmp22 and .Ltmp27
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp27-.Lfunc_begin3          # >> Call Site 8 <<
	.uleb128 .Ltmp28-.Ltmp27                #   Call between .Ltmp27 and .Ltmp28
	.uleb128 .Ltmp29-.Lfunc_begin3          #     jumps to .Ltmp29
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp28-.Lfunc_begin3          # >> Call Site 9 <<
	.uleb128 .Lfunc_end4-.Ltmp28            #   Call between .Ltmp28 and .Lfunc_end4
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end3:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi # -- Begin function _ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi,@function
_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi: # @_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi
.Lfunc_begin4:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception4
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r13
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rcx, %r14
	movq	%rdx, %r15
	movq	%rsi, %r12
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$4, %rax
	jne	.LBB5_1
# %bb.5:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$4, %rax
	jne	.LBB5_6
# %bb.8:
	movl	$184, %edi
	callq	_Znwm
	movq	%rax, %r13
.Ltmp36:
	movq	%rax, %rdi
	movq	%r12, %rsi
	movq	%r15, %rdx
	movq	%r14, %rcx
	callq	_ZN3ops6Conv2DC1EPNS_2OpES2_PKi
.Ltmp37:
# %bb.9:
	movq	(%rbx), %rdi
	movq	%r13, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r13, %rax
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB5_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp30:
	movl	$.L.str.6, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp31:
	jmp	.LBB5_2
.LBB5_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp33:
	movl	$.L.str.7, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp34:
.LBB5_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB5_7:
.Ltmp35:
	jmp	.LBB5_4
.LBB5_3:
.Ltmp32:
.LBB5_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB5_11
.LBB5_10:
.Ltmp38:
	movq	%rax, %rbx
	movq	%r13, %rdi
	callq	_ZdlPv
.LBB5_11:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end5:
	.size	_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi, .Lfunc_end5-_ZN3ops10OpsBuilder6conv2dEPNS_2OpES2_PKi
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table5:
.Lexception4:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end4-.Lcst_begin4
.Lcst_begin4:
	.uleb128 .Lfunc_begin4-.Lfunc_begin4    # >> Call Site 1 <<
	.uleb128 .Ltmp36-.Lfunc_begin4          #   Call between .Lfunc_begin4 and .Ltmp36
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp36-.Lfunc_begin4          # >> Call Site 2 <<
	.uleb128 .Ltmp37-.Ltmp36                #   Call between .Ltmp36 and .Ltmp37
	.uleb128 .Ltmp38-.Lfunc_begin4          #     jumps to .Ltmp38
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp37-.Lfunc_begin4          # >> Call Site 3 <<
	.uleb128 .Ltmp30-.Ltmp37                #   Call between .Ltmp37 and .Ltmp30
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp30-.Lfunc_begin4          # >> Call Site 4 <<
	.uleb128 .Ltmp31-.Ltmp30                #   Call between .Ltmp30 and .Ltmp31
	.uleb128 .Ltmp32-.Lfunc_begin4          #     jumps to .Ltmp32
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp31-.Lfunc_begin4          # >> Call Site 5 <<
	.uleb128 .Ltmp33-.Ltmp31                #   Call between .Ltmp31 and .Ltmp33
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp33-.Lfunc_begin4          # >> Call Site 6 <<
	.uleb128 .Ltmp34-.Ltmp33                #   Call between .Ltmp33 and .Ltmp34
	.uleb128 .Ltmp35-.Lfunc_begin4          #     jumps to .Ltmp35
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp34-.Lfunc_begin4          # >> Call Site 7 <<
	.uleb128 .Lfunc_end5-.Ltmp34            #   Call between .Ltmp34 and .Lfunc_end5
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end4:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_: # @_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_
.Lfunc_begin5:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception5
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$4, %rax
	jne	.LBB6_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$1, %rax
	jne	.LBB6_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movl	$3, %esi
	movq	%rax, %rdi
	callq	_ZNK3ops5ShapeixEm
	movl	%eax, %ebp
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	xorl	%esi, %esi
	callq	_ZNK3ops5ShapeixEm
	cmpl	%eax, %ebp
	jne	.LBB6_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp48:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops13Conv2DBiasAddC1EPNS_2OpES2_
.Ltmp49:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB6_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp39:
	movl	$.L.str.8, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp40:
	jmp	.LBB6_2
.LBB6_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp42:
	movl	$.L.str.9, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp43:
	jmp	.LBB6_2
.LBB6_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp45:
	movl	$.L.str.10, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp46:
.LBB6_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB6_10:
.Ltmp47:
	jmp	.LBB6_4
.LBB6_7:
.Ltmp44:
	jmp	.LBB6_4
.LBB6_3:
.Ltmp41:
.LBB6_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB6_14
.LBB6_13:
.Ltmp50:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB6_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end6:
	.size	_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_, .Lfunc_end6-_ZN3ops10OpsBuilder15conv2d_bias_addEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table6:
.Lexception5:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end5-.Lcst_begin5
.Lcst_begin5:
	.uleb128 .Lfunc_begin5-.Lfunc_begin5    # >> Call Site 1 <<
	.uleb128 .Ltmp48-.Lfunc_begin5          #   Call between .Lfunc_begin5 and .Ltmp48
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp48-.Lfunc_begin5          # >> Call Site 2 <<
	.uleb128 .Ltmp49-.Ltmp48                #   Call between .Ltmp48 and .Ltmp49
	.uleb128 .Ltmp50-.Lfunc_begin5          #     jumps to .Ltmp50
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp49-.Lfunc_begin5          # >> Call Site 3 <<
	.uleb128 .Ltmp39-.Ltmp49                #   Call between .Ltmp49 and .Ltmp39
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp39-.Lfunc_begin5          # >> Call Site 4 <<
	.uleb128 .Ltmp40-.Ltmp39                #   Call between .Ltmp39 and .Ltmp40
	.uleb128 .Ltmp41-.Lfunc_begin5          #     jumps to .Ltmp41
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp40-.Lfunc_begin5          # >> Call Site 5 <<
	.uleb128 .Ltmp42-.Ltmp40                #   Call between .Ltmp40 and .Ltmp42
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp42-.Lfunc_begin5          # >> Call Site 6 <<
	.uleb128 .Ltmp43-.Ltmp42                #   Call between .Ltmp42 and .Ltmp43
	.uleb128 .Ltmp44-.Lfunc_begin5          #     jumps to .Ltmp44
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp43-.Lfunc_begin5          # >> Call Site 7 <<
	.uleb128 .Ltmp45-.Ltmp43                #   Call between .Ltmp43 and .Ltmp45
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp45-.Lfunc_begin5          # >> Call Site 8 <<
	.uleb128 .Ltmp46-.Ltmp45                #   Call between .Ltmp45 and .Ltmp46
	.uleb128 .Ltmp47-.Lfunc_begin5          #     jumps to .Ltmp47
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp46-.Lfunc_begin5          # >> Call Site 9 <<
	.uleb128 .Lfunc_end6-.Ltmp46            #   Call between .Ltmp46 and .Lfunc_end6
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end5:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE # -- Begin function _ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE,@function
_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE: # @_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE
.Lfunc_begin6:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception6
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$4, %rax
	jne	.LBB7_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r15
.Ltmp54:
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	_ZN3ops17Conv2DBiasAddGradC1EPNS_2OpE
.Ltmp55:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r15, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r15, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB7_1:
	.cfi_def_cfa_offset 32
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp51:
	movl	$.L.str.11, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp52:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB7_3:
.Ltmp53:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB7_7
.LBB7_6:
.Ltmp56:
	movq	%rax, %r14
	movq	%r15, %rdi
	callq	_ZdlPv
.LBB7_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end7:
	.size	_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE, .Lfunc_end7-_ZN3ops10OpsBuilder20conv2d_bias_add_gradEPNS_2OpE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table7:
.Lexception6:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end6-.Lcst_begin6
.Lcst_begin6:
	.uleb128 .Lfunc_begin6-.Lfunc_begin6    # >> Call Site 1 <<
	.uleb128 .Ltmp54-.Lfunc_begin6          #   Call between .Lfunc_begin6 and .Ltmp54
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp54-.Lfunc_begin6          # >> Call Site 2 <<
	.uleb128 .Ltmp55-.Ltmp54                #   Call between .Ltmp54 and .Ltmp55
	.uleb128 .Ltmp56-.Lfunc_begin6          #     jumps to .Ltmp56
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp55-.Lfunc_begin6          # >> Call Site 3 <<
	.uleb128 .Ltmp51-.Ltmp55                #   Call between .Ltmp55 and .Ltmp51
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp51-.Lfunc_begin6          # >> Call Site 4 <<
	.uleb128 .Ltmp52-.Ltmp51                #   Call between .Ltmp51 and .Ltmp52
	.uleb128 .Ltmp53-.Lfunc_begin6          #     jumps to .Ltmp53
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp52-.Lfunc_begin6          # >> Call Site 5 <<
	.uleb128 .Lfunc_end7-.Ltmp52            #   Call between .Ltmp52 and .Lfunc_end7
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end6:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_ # -- Begin function _ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_,@function
_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_: # @_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_
.Lfunc_begin7:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception7
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %r15
	movq	%rcx, %r12
	movq	%rdx, %r13
	movq	%rsi, %rbp
	movq	%rdi, %r14
	movl	$136, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp57:
	movq	%rax, %rdi
	movq	%rbp, %rsi
	movq	%r13, %rdx
	movq	%r12, %rcx
	movq	%r15, %r8
	callq	_ZN3ops15Conv2DInputGradC1EPNS_2OpES2_PKiS4_
.Ltmp58:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB8_2:
	.cfi_def_cfa_offset 64
.Ltmp59:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end8:
	.size	_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_, .Lfunc_end8-_ZN3ops10OpsBuilder17conv2d_input_gradEPNS_2OpES2_PKiS4_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table8:
.Lexception7:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end7-.Lcst_begin7
.Lcst_begin7:
	.uleb128 .Lfunc_begin7-.Lfunc_begin7    # >> Call Site 1 <<
	.uleb128 .Ltmp57-.Lfunc_begin7          #   Call between .Lfunc_begin7 and .Ltmp57
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp57-.Lfunc_begin7          # >> Call Site 2 <<
	.uleb128 .Ltmp58-.Ltmp57                #   Call between .Ltmp57 and .Ltmp58
	.uleb128 .Ltmp59-.Lfunc_begin7          #     jumps to .Ltmp59
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp58-.Lfunc_begin7          # >> Call Site 3 <<
	.uleb128 .Lfunc_end8-.Ltmp58            #   Call between .Ltmp58 and .Lfunc_end8
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end7:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_ # -- Begin function _ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_,@function
_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_: # @_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_
.Lfunc_begin8:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception8
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r9, %r15
	movq	%r8, %r12
	movq	%rcx, %r13
	movq	%rdx, %rbp
	movq	%rsi, %r14
	movq	%rdi, (%rsp)                    # 8-byte Spill
	movl	$144, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp60:
	movq	%rax, %rdi
	movq	%r14, %rsi
	movq	%rbp, %rdx
	movq	%r13, %rcx
	movq	%r12, %r8
	movq	%r15, %r9
	callq	_ZN3ops16Conv2DKernelGradC1EPNS_2OpES2_PKiS4_S4_
.Ltmp61:
# %bb.1:
	movq	(%rsp), %rax                    # 8-byte Reload
	movq	(%rax), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB9_2:
	.cfi_def_cfa_offset 64
.Ltmp62:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end9:
	.size	_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_, .Lfunc_end9-_ZN3ops10OpsBuilder18conv2d_kernel_gradEPNS_2OpES2_PKiS4_S4_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table9:
.Lexception8:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end8-.Lcst_begin8
.Lcst_begin8:
	.uleb128 .Lfunc_begin8-.Lfunc_begin8    # >> Call Site 1 <<
	.uleb128 .Ltmp60-.Lfunc_begin8          #   Call between .Lfunc_begin8 and .Ltmp60
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp60-.Lfunc_begin8          # >> Call Site 2 <<
	.uleb128 .Ltmp61-.Ltmp60                #   Call between .Ltmp60 and .Ltmp61
	.uleb128 .Ltmp62-.Lfunc_begin8          #     jumps to .Ltmp62
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp61-.Lfunc_begin8          # >> Call Site 3 <<
	.uleb128 .Lfunc_end9-.Ltmp61            #   Call between .Ltmp61 and .Lfunc_end9
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end8:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_ # -- Begin function _ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_,@function
_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_: # @_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_
.Lfunc_begin9:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception9
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %r15
	movq	%rcx, %r12
	movq	%rdx, %r13
	movq	%rsi, %rbp
	movq	%rdi, %r14
	movl	$176, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp63:
	movq	%rax, %rdi
	movq	%rbp, %rsi
	movq	%r13, %rdx
	movq	%r12, %rcx
	movq	%r15, %r8
	callq	_ZN3ops15Conv2DTransposeC1EPNS_2OpES2_PKiS4_
.Ltmp64:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB10_2:
	.cfi_def_cfa_offset 64
.Ltmp65:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end10:
	.size	_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_, .Lfunc_end10-_ZN3ops10OpsBuilder16conv2d_transposeEPNS_2OpES2_PKiS4_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table10:
.Lexception9:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end9-.Lcst_begin9
.Lcst_begin9:
	.uleb128 .Lfunc_begin9-.Lfunc_begin9    # >> Call Site 1 <<
	.uleb128 .Ltmp63-.Lfunc_begin9          #   Call between .Lfunc_begin9 and .Ltmp63
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp63-.Lfunc_begin9          # >> Call Site 2 <<
	.uleb128 .Ltmp64-.Ltmp63                #   Call between .Ltmp63 and .Ltmp64
	.uleb128 .Ltmp65-.Lfunc_begin9          #     jumps to .Ltmp65
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp64-.Lfunc_begin9          # >> Call Site 3 <<
	.uleb128 .Lfunc_end10-.Ltmp64           #   Call between .Ltmp64 and .Lfunc_end10
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end9:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_ # -- Begin function _ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_,@function
_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_: # @_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_
.Lfunc_begin10:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception10
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %r15
	movq	%rcx, %r12
	movq	%rdx, %r13
	movq	%rsi, %rbp
	movq	%rdi, %r14
	movl	$136, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp66:
	movq	%rax, %rdi
	movq	%rbp, %rsi
	movq	%r13, %rdx
	movq	%r12, %rcx
	movq	%r15, %r8
	callq	_ZN3ops24Conv2DTransposeInputGradC1EPNS_2OpES2_PKiS4_
.Ltmp67:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB11_2:
	.cfi_def_cfa_offset 64
.Ltmp68:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end11:
	.size	_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_, .Lfunc_end11-_ZN3ops10OpsBuilder27conv2d_transpose_input_gradEPNS_2OpES2_PKiS4_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table11:
.Lexception10:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end10-.Lcst_begin10
.Lcst_begin10:
	.uleb128 .Lfunc_begin10-.Lfunc_begin10  # >> Call Site 1 <<
	.uleb128 .Ltmp66-.Lfunc_begin10         #   Call between .Lfunc_begin10 and .Ltmp66
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp66-.Lfunc_begin10         # >> Call Site 2 <<
	.uleb128 .Ltmp67-.Ltmp66                #   Call between .Ltmp66 and .Ltmp67
	.uleb128 .Ltmp68-.Lfunc_begin10         #     jumps to .Ltmp68
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp67-.Lfunc_begin10         # >> Call Site 3 <<
	.uleb128 .Lfunc_end11-.Ltmp67           #   Call between .Ltmp67 and .Lfunc_end11
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end10:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_ # -- Begin function _ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_,@function
_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_: # @_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_
.Lfunc_begin11:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception11
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %r15
	movq	%rcx, %r12
	movq	%rdx, %r13
	movq	%rsi, %rbp
	movq	%rdi, %r14
	movl	$136, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp69:
	movq	%rax, %rdi
	movq	%rbp, %rsi
	movq	%r13, %rdx
	movq	%r12, %rcx
	movq	%r15, %r8
	callq	_ZN3ops25Conv2DTransposeKernelGradC1EPNS_2OpES2_PKiS4_
.Ltmp70:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB12_2:
	.cfi_def_cfa_offset 64
.Ltmp71:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end12:
	.size	_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_, .Lfunc_end12-_ZN3ops10OpsBuilder28conv2d_transpose_kernel_gradEPNS_2OpES2_PKiS4_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table12:
.Lexception11:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end11-.Lcst_begin11
.Lcst_begin11:
	.uleb128 .Lfunc_begin11-.Lfunc_begin11  # >> Call Site 1 <<
	.uleb128 .Ltmp69-.Lfunc_begin11         #   Call between .Lfunc_begin11 and .Ltmp69
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp69-.Lfunc_begin11         # >> Call Site 2 <<
	.uleb128 .Ltmp70-.Ltmp69                #   Call between .Ltmp69 and .Ltmp70
	.uleb128 .Ltmp71-.Lfunc_begin11         #     jumps to .Ltmp71
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp70-.Lfunc_begin11         # >> Call Site 3 <<
	.uleb128 .Lfunc_end12-.Ltmp70           #   Call between .Ltmp70 and .Lfunc_end12
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end11:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder5inputERKNS_5ShapeE # -- Begin function _ZN3ops10OpsBuilder5inputERKNS_5ShapeE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder5inputERKNS_5ShapeE,@function
_ZN3ops10OpsBuilder5inputERKNS_5ShapeE: # @_ZN3ops10OpsBuilder5inputERKNS_5ShapeE
.Lfunc_begin12:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception12
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r15
	movq	%rdi, %r14
	movl	$128, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp72:
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	_ZN3ops5InputC1ERKNS_5ShapeE
.Ltmp73:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB13_2:
	.cfi_def_cfa_offset 32
.Ltmp74:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end13:
	.size	_ZN3ops10OpsBuilder5inputERKNS_5ShapeE, .Lfunc_end13-_ZN3ops10OpsBuilder5inputERKNS_5ShapeE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table13:
.Lexception12:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end12-.Lcst_begin12
.Lcst_begin12:
	.uleb128 .Lfunc_begin12-.Lfunc_begin12  # >> Call Site 1 <<
	.uleb128 .Ltmp72-.Lfunc_begin12         #   Call between .Lfunc_begin12 and .Ltmp72
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp72-.Lfunc_begin12         # >> Call Site 2 <<
	.uleb128 .Ltmp73-.Ltmp72                #   Call between .Ltmp72 and .Ltmp73
	.uleb128 .Ltmp74-.Lfunc_begin12         #     jumps to .Ltmp74
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp73-.Lfunc_begin12         # >> Call Site 3 <<
	.uleb128 .Lfunc_end13-.Ltmp73           #   Call between .Ltmp73 and .Lfunc_end13
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end12:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f # -- Begin function _ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f,@function
_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f: # @_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f
.Lfunc_begin13:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception13
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movss	%xmm0, 4(%rsp)                  # 4-byte Spill
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB14_1
# %bb.4:
	movl	$120, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp75:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	movss	4(%rsp), %xmm0                  # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	callq	_ZN3ops13LeakyReluGradC1EPNS_2OpES2_f
.Ltmp76:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB14_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp78:
	movl	$.L.str.12, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp79:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB14_3:
.Ltmp80:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB14_7
.LBB14_6:
.Ltmp77:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB14_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end14:
	.size	_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f, .Lfunc_end14-_ZN3ops10OpsBuilder15leaky_relu_gradEPNS_2OpES2_f
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table14:
.Lexception13:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end13-.Lcst_begin13
.Lcst_begin13:
	.uleb128 .Lfunc_begin13-.Lfunc_begin13  # >> Call Site 1 <<
	.uleb128 .Ltmp75-.Lfunc_begin13         #   Call between .Lfunc_begin13 and .Ltmp75
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp75-.Lfunc_begin13         # >> Call Site 2 <<
	.uleb128 .Ltmp76-.Ltmp75                #   Call between .Ltmp75 and .Ltmp76
	.uleb128 .Ltmp77-.Lfunc_begin13         #     jumps to .Ltmp77
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp76-.Lfunc_begin13         # >> Call Site 3 <<
	.uleb128 .Ltmp78-.Ltmp76                #   Call between .Ltmp76 and .Ltmp78
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp78-.Lfunc_begin13         # >> Call Site 4 <<
	.uleb128 .Ltmp79-.Ltmp78                #   Call between .Ltmp78 and .Ltmp79
	.uleb128 .Ltmp80-.Lfunc_begin13         #     jumps to .Ltmp80
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp79-.Lfunc_begin13         # >> Call Site 5 <<
	.uleb128 .Lfunc_end14-.Ltmp79           #   Call between .Ltmp79 and .Lfunc_end14
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end13:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE # -- Begin function _ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE,@function
_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE: # @_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE
.Lfunc_begin14:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception14
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB15_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r15
.Ltmp84:
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	_ZN3ops10LogSoftmaxC1EPNS_2OpE
.Ltmp85:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r15, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r15, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB15_1:
	.cfi_def_cfa_offset 32
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp81:
	movl	$.L.str.13, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp82:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB15_3:
.Ltmp83:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB15_7
.LBB15_6:
.Ltmp86:
	movq	%rax, %r14
	movq	%r15, %rdi
	callq	_ZdlPv
.LBB15_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end15:
	.size	_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE, .Lfunc_end15-_ZN3ops10OpsBuilder11log_softmaxEPNS_2OpE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table15:
.Lexception14:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end14-.Lcst_begin14
.Lcst_begin14:
	.uleb128 .Lfunc_begin14-.Lfunc_begin14  # >> Call Site 1 <<
	.uleb128 .Ltmp84-.Lfunc_begin14         #   Call between .Lfunc_begin14 and .Ltmp84
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp84-.Lfunc_begin14         # >> Call Site 2 <<
	.uleb128 .Ltmp85-.Ltmp84                #   Call between .Ltmp84 and .Ltmp85
	.uleb128 .Ltmp86-.Lfunc_begin14         #     jumps to .Ltmp86
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp85-.Lfunc_begin14         # >> Call Site 3 <<
	.uleb128 .Ltmp81-.Ltmp85                #   Call between .Ltmp85 and .Ltmp81
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp81-.Lfunc_begin14         # >> Call Site 4 <<
	.uleb128 .Ltmp82-.Ltmp81                #   Call between .Ltmp81 and .Ltmp82
	.uleb128 .Ltmp83-.Lfunc_begin14         #     jumps to .Ltmp83
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp82-.Lfunc_begin14         # >> Call Site 5 <<
	.uleb128 .Lfunc_end15-.Ltmp82           #   Call between .Ltmp82 and .Lfunc_end15
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end14:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb # -- Begin function _ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb,@function
_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb: # @_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb
.Lfunc_begin15:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception15
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	%r8d, %r12d
	movl	%ecx, %ebp
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB16_1
# %bb.5:
	movq	%rbx, (%rsp)                    # 8-byte Spill
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB16_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movl	%ebp, %ecx
	xorb	$1, %cl
	movzbl	%cl, %esi
	movq	%rax, %rdi
	callq	_ZNK3ops5ShapeixEm
	movl	%eax, %ebx
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movzbl	%r12b, %r13d
	movq	%rax, %rdi
	movq	%r13, %rsi
	callq	_ZNK3ops5ShapeixEm
	cmpl	%eax, %ebx
	jne	.LBB16_9
# %bb.11:
	movl	$120, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp96:
	movzbl	%bpl, %ecx
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	movl	%r13d, %r8d
	callq	_ZN3ops9MatMatMulC1EPNS_2OpES2_bb
.Ltmp97:
# %bb.12:
	movq	(%rsp), %rax                    # 8-byte Reload
	movq	(%rax), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB16_1:
	.cfi_def_cfa_offset 64
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp87:
	movl	$.L.str.14, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp88:
	jmp	.LBB16_2
.LBB16_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp90:
	movl	$.L.str.15, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp91:
	jmp	.LBB16_2
.LBB16_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp93:
	movl	$.L.str.16, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp94:
.LBB16_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB16_10:
.Ltmp95:
	jmp	.LBB16_4
.LBB16_7:
.Ltmp92:
	jmp	.LBB16_4
.LBB16_3:
.Ltmp89:
.LBB16_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB16_14
.LBB16_13:
.Ltmp98:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB16_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end16:
	.size	_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb, .Lfunc_end16-_ZN3ops10OpsBuilder11mat_mat_mulEPNS_2OpES2_bb
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table16:
.Lexception15:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end15-.Lcst_begin15
.Lcst_begin15:
	.uleb128 .Lfunc_begin15-.Lfunc_begin15  # >> Call Site 1 <<
	.uleb128 .Ltmp96-.Lfunc_begin15         #   Call between .Lfunc_begin15 and .Ltmp96
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp96-.Lfunc_begin15         # >> Call Site 2 <<
	.uleb128 .Ltmp97-.Ltmp96                #   Call between .Ltmp96 and .Ltmp97
	.uleb128 .Ltmp98-.Lfunc_begin15         #     jumps to .Ltmp98
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp97-.Lfunc_begin15         # >> Call Site 3 <<
	.uleb128 .Ltmp87-.Ltmp97                #   Call between .Ltmp97 and .Ltmp87
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp87-.Lfunc_begin15         # >> Call Site 4 <<
	.uleb128 .Ltmp88-.Ltmp87                #   Call between .Ltmp87 and .Ltmp88
	.uleb128 .Ltmp89-.Lfunc_begin15         #     jumps to .Ltmp89
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp88-.Lfunc_begin15         # >> Call Site 5 <<
	.uleb128 .Ltmp90-.Ltmp88                #   Call between .Ltmp88 and .Ltmp90
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp90-.Lfunc_begin15         # >> Call Site 6 <<
	.uleb128 .Ltmp91-.Ltmp90                #   Call between .Ltmp90 and .Ltmp91
	.uleb128 .Ltmp92-.Lfunc_begin15         #     jumps to .Ltmp92
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp91-.Lfunc_begin15         # >> Call Site 7 <<
	.uleb128 .Ltmp93-.Ltmp91                #   Call between .Ltmp91 and .Ltmp93
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp93-.Lfunc_begin15         # >> Call Site 8 <<
	.uleb128 .Ltmp94-.Ltmp93                #   Call between .Ltmp93 and .Ltmp94
	.uleb128 .Ltmp95-.Lfunc_begin15         #     jumps to .Ltmp95
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp94-.Lfunc_begin15         # >> Call Site 9 <<
	.uleb128 .Lfunc_end16-.Ltmp94           #   Call between .Ltmp94 and .Lfunc_end16
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end15:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_ # -- Begin function _ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_,@function
_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_: # @_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_
.Lfunc_begin16:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception16
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %r14
	movq	%rdx, %r15
	movq	%rsi, %r12
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB17_1
# %bb.5:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB17_6
# %bb.8:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$1, %rax
	jne	.LBB17_9
# %bb.11:
	movq	%r12, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movl	$1, %esi
	movq	%rax, %rdi
	callq	_ZNK3ops5ShapeixEm
	movl	%eax, %ebp
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	xorl	%esi, %esi
	callq	_ZNK3ops5ShapeixEm
	cmpl	%eax, %ebp
	jne	.LBB17_12
# %bb.14:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movl	$1, %esi
	movq	%rax, %rdi
	callq	_ZNK3ops5ShapeixEm
	movl	%eax, %ebp
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	xorl	%esi, %esi
	callq	_ZNK3ops5ShapeixEm
	cmpl	%eax, %ebp
	jne	.LBB17_15
# %bb.17:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r13
.Ltmp114:
	movq	%rax, %rdi
	movq	%r12, %rsi
	movq	%r15, %rdx
	movq	%r14, %rcx
	callq	_ZN3ops9MatMulAddC1EPNS_2OpES2_S2_
.Ltmp115:
# %bb.18:
	movq	(%rbx), %rdi
	movq	%r13, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r13, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB17_1:
	.cfi_def_cfa_offset 64
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp99:
	movl	$.L.str.17, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp100:
	jmp	.LBB17_2
.LBB17_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp102:
	movl	$.L.str.18, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp103:
	jmp	.LBB17_2
.LBB17_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp105:
	movl	$.L.str.19, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp106:
	jmp	.LBB17_2
.LBB17_12:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp108:
	movl	$.L.str.20, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp109:
	jmp	.LBB17_2
.LBB17_15:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp111:
	movl	$.L.str.21, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp112:
.LBB17_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB17_16:
.Ltmp113:
	jmp	.LBB17_4
.LBB17_13:
.Ltmp110:
	jmp	.LBB17_4
.LBB17_10:
.Ltmp107:
	jmp	.LBB17_4
.LBB17_7:
.Ltmp104:
	jmp	.LBB17_4
.LBB17_3:
.Ltmp101:
.LBB17_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB17_20
.LBB17_19:
.Ltmp116:
	movq	%rax, %rbx
	movq	%r13, %rdi
	callq	_ZdlPv
.LBB17_20:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end17:
	.size	_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_, .Lfunc_end17-_ZN3ops10OpsBuilder11mat_mul_addEPNS_2OpES2_S2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table17:
.Lexception16:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end16-.Lcst_begin16
.Lcst_begin16:
	.uleb128 .Lfunc_begin16-.Lfunc_begin16  # >> Call Site 1 <<
	.uleb128 .Ltmp114-.Lfunc_begin16        #   Call between .Lfunc_begin16 and .Ltmp114
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp114-.Lfunc_begin16        # >> Call Site 2 <<
	.uleb128 .Ltmp115-.Ltmp114              #   Call between .Ltmp114 and .Ltmp115
	.uleb128 .Ltmp116-.Lfunc_begin16        #     jumps to .Ltmp116
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp115-.Lfunc_begin16        # >> Call Site 3 <<
	.uleb128 .Ltmp99-.Ltmp115               #   Call between .Ltmp115 and .Ltmp99
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp99-.Lfunc_begin16         # >> Call Site 4 <<
	.uleb128 .Ltmp100-.Ltmp99               #   Call between .Ltmp99 and .Ltmp100
	.uleb128 .Ltmp101-.Lfunc_begin16        #     jumps to .Ltmp101
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp100-.Lfunc_begin16        # >> Call Site 5 <<
	.uleb128 .Ltmp102-.Ltmp100              #   Call between .Ltmp100 and .Ltmp102
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp102-.Lfunc_begin16        # >> Call Site 6 <<
	.uleb128 .Ltmp103-.Ltmp102              #   Call between .Ltmp102 and .Ltmp103
	.uleb128 .Ltmp104-.Lfunc_begin16        #     jumps to .Ltmp104
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp103-.Lfunc_begin16        # >> Call Site 7 <<
	.uleb128 .Ltmp105-.Ltmp103              #   Call between .Ltmp103 and .Ltmp105
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp105-.Lfunc_begin16        # >> Call Site 8 <<
	.uleb128 .Ltmp106-.Ltmp105              #   Call between .Ltmp105 and .Ltmp106
	.uleb128 .Ltmp107-.Lfunc_begin16        #     jumps to .Ltmp107
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp106-.Lfunc_begin16        # >> Call Site 9 <<
	.uleb128 .Ltmp108-.Ltmp106              #   Call between .Ltmp106 and .Ltmp108
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp108-.Lfunc_begin16        # >> Call Site 10 <<
	.uleb128 .Ltmp109-.Ltmp108              #   Call between .Ltmp108 and .Ltmp109
	.uleb128 .Ltmp110-.Lfunc_begin16        #     jumps to .Ltmp110
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp109-.Lfunc_begin16        # >> Call Site 11 <<
	.uleb128 .Ltmp111-.Ltmp109              #   Call between .Ltmp109 and .Ltmp111
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp111-.Lfunc_begin16        # >> Call Site 12 <<
	.uleb128 .Ltmp112-.Ltmp111              #   Call between .Ltmp111 and .Ltmp112
	.uleb128 .Ltmp113-.Lfunc_begin16        #     jumps to .Ltmp113
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp112-.Lfunc_begin16        # >> Call Site 13 <<
	.uleb128 .Lfunc_end17-.Ltmp112          #   Call between .Ltmp112 and .Lfunc_end17
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end16:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_: # @_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_
.Lfunc_begin17:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception17
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB18_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$1, %rax
	jne	.LBB18_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movl	$1, %esi
	movq	%rax, %rdi
	callq	_ZNK3ops5ShapeixEm
	movl	%eax, %ebp
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	xorl	%esi, %esi
	callq	_ZNK3ops5ShapeixEm
	cmpl	%eax, %ebp
	jne	.LBB18_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp126:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops11MatRvectAddC1EPNS_2OpES2_
.Ltmp127:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB18_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp117:
	movl	$.L.str.14, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp118:
	jmp	.LBB18_2
.LBB18_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp120:
	movl	$.L.str.22, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp121:
	jmp	.LBB18_2
.LBB18_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp123:
	movl	$.L.str.16, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp124:
.LBB18_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB18_10:
.Ltmp125:
	jmp	.LBB18_4
.LBB18_7:
.Ltmp122:
	jmp	.LBB18_4
.LBB18_3:
.Ltmp119:
.LBB18_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB18_14
.LBB18_13:
.Ltmp128:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB18_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end18:
	.size	_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_, .Lfunc_end18-_ZN3ops10OpsBuilder13mat_rvect_addEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table18:
.Lexception17:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end17-.Lcst_begin17
.Lcst_begin17:
	.uleb128 .Lfunc_begin17-.Lfunc_begin17  # >> Call Site 1 <<
	.uleb128 .Ltmp126-.Lfunc_begin17        #   Call between .Lfunc_begin17 and .Ltmp126
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp126-.Lfunc_begin17        # >> Call Site 2 <<
	.uleb128 .Ltmp127-.Ltmp126              #   Call between .Ltmp126 and .Ltmp127
	.uleb128 .Ltmp128-.Lfunc_begin17        #     jumps to .Ltmp128
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp127-.Lfunc_begin17        # >> Call Site 3 <<
	.uleb128 .Ltmp117-.Ltmp127              #   Call between .Ltmp127 and .Ltmp117
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp117-.Lfunc_begin17        # >> Call Site 4 <<
	.uleb128 .Ltmp118-.Ltmp117              #   Call between .Ltmp117 and .Ltmp118
	.uleb128 .Ltmp119-.Lfunc_begin17        #     jumps to .Ltmp119
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp118-.Lfunc_begin17        # >> Call Site 5 <<
	.uleb128 .Ltmp120-.Ltmp118              #   Call between .Ltmp118 and .Ltmp120
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp120-.Lfunc_begin17        # >> Call Site 6 <<
	.uleb128 .Ltmp121-.Ltmp120              #   Call between .Ltmp120 and .Ltmp121
	.uleb128 .Ltmp122-.Lfunc_begin17        #     jumps to .Ltmp122
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp121-.Lfunc_begin17        # >> Call Site 7 <<
	.uleb128 .Ltmp123-.Ltmp121              #   Call between .Ltmp121 and .Ltmp123
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp123-.Lfunc_begin17        # >> Call Site 8 <<
	.uleb128 .Ltmp124-.Ltmp123              #   Call between .Ltmp123 and .Ltmp124
	.uleb128 .Ltmp125-.Lfunc_begin17        #     jumps to .Ltmp125
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp124-.Lfunc_begin17        # >> Call Site 9 <<
	.uleb128 .Lfunc_end18-.Ltmp124          #   Call between .Ltmp124 and .Lfunc_end18
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end17:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm # -- Begin function _ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm,@function
_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm:  # @_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm
.Lfunc_begin18:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception18
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB19_1
# %bb.5:
	cmpq	$2, %r14
	jae	.LBB19_6
# %bb.8:
	movl	$120, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp132:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops6MatSumC1EPNS_2OpEm
.Ltmp133:
# %bb.9:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB19_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp129:
	movl	$.L.str.23, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp130:
	jmp	.LBB19_2
.LBB19_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp135:
	movl	$.L.str.24, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp136:
.LBB19_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB19_7:
.Ltmp137:
	jmp	.LBB19_4
.LBB19_3:
.Ltmp131:
.LBB19_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB19_11
.LBB19_10:
.Ltmp134:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB19_11:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end19:
	.size	_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm, .Lfunc_end19-_ZN3ops10OpsBuilder7mat_sumEPNS_2OpEm
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table19:
.Lexception18:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end18-.Lcst_begin18
.Lcst_begin18:
	.uleb128 .Lfunc_begin18-.Lfunc_begin18  # >> Call Site 1 <<
	.uleb128 .Ltmp132-.Lfunc_begin18        #   Call between .Lfunc_begin18 and .Ltmp132
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp132-.Lfunc_begin18        # >> Call Site 2 <<
	.uleb128 .Ltmp133-.Ltmp132              #   Call between .Ltmp132 and .Ltmp133
	.uleb128 .Ltmp134-.Lfunc_begin18        #     jumps to .Ltmp134
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp133-.Lfunc_begin18        # >> Call Site 3 <<
	.uleb128 .Ltmp129-.Ltmp133              #   Call between .Ltmp133 and .Ltmp129
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp129-.Lfunc_begin18        # >> Call Site 4 <<
	.uleb128 .Ltmp130-.Ltmp129              #   Call between .Ltmp129 and .Ltmp130
	.uleb128 .Ltmp131-.Lfunc_begin18        #     jumps to .Ltmp131
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp130-.Lfunc_begin18        # >> Call Site 5 <<
	.uleb128 .Ltmp135-.Ltmp130              #   Call between .Ltmp130 and .Ltmp135
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp135-.Lfunc_begin18        # >> Call Site 6 <<
	.uleb128 .Ltmp136-.Ltmp135              #   Call between .Ltmp135 and .Ltmp136
	.uleb128 .Ltmp137-.Lfunc_begin18        #     jumps to .Ltmp137
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp136-.Lfunc_begin18        # >> Call Site 7 <<
	.uleb128 .Lfunc_end19-.Ltmp136          #   Call between .Ltmp136 and .Lfunc_end19
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end18:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb # -- Begin function _ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb,@function
_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb: # @_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb
.Lfunc_begin19:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception19
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$16, %rsp
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	%ecx, %ebp
	movss	%xmm1, 12(%rsp)                 # 4-byte Spill
	movss	%xmm0, 8(%rsp)                  # 4-byte Spill
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB20_1
# %bb.4:
	movl	$136, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp138:
	movzbl	%bpl, %ecx
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	movss	8(%rsp), %xmm0                  # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	12(%rsp), %xmm1                 # 4-byte Reload
                                        # xmm1 = mem[0],zero,zero,zero
	callq	_ZN3ops12MomentUpdateC1EPNS_8VariableEPNS_2OpEffb
.Ltmp139:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$16, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB20_1:
	.cfi_def_cfa_offset 64
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp141:
	movl	$.L.str.25, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp142:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB20_3:
.Ltmp143:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB20_7
.LBB20_6:
.Ltmp140:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB20_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end20:
	.size	_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb, .Lfunc_end20-_ZN3ops10OpsBuilder13moment_updateEPNS_8VariableEPNS_2OpEffb
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table20:
.Lexception19:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end19-.Lcst_begin19
.Lcst_begin19:
	.uleb128 .Lfunc_begin19-.Lfunc_begin19  # >> Call Site 1 <<
	.uleb128 .Ltmp138-.Lfunc_begin19        #   Call between .Lfunc_begin19 and .Ltmp138
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp138-.Lfunc_begin19        # >> Call Site 2 <<
	.uleb128 .Ltmp139-.Ltmp138              #   Call between .Ltmp138 and .Ltmp139
	.uleb128 .Ltmp140-.Lfunc_begin19        #     jumps to .Ltmp140
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp139-.Lfunc_begin19        # >> Call Site 3 <<
	.uleb128 .Ltmp141-.Ltmp139              #   Call between .Ltmp139 and .Ltmp141
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp141-.Lfunc_begin19        # >> Call Site 4 <<
	.uleb128 .Ltmp142-.Ltmp141              #   Call between .Ltmp141 and .Ltmp142
	.uleb128 .Ltmp143-.Lfunc_begin19        #     jumps to .Ltmp143
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp142-.Lfunc_begin19        # >> Call Site 5 <<
	.uleb128 .Lfunc_end20-.Ltmp142          #   Call between .Ltmp142 and .Lfunc_end20
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end19:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder3mseEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder3mseEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder3mseEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder3mseEPNS_2OpES2_:    # @_ZN3ops10OpsBuilder3mseEPNS_2OpES2_
.Lfunc_begin20:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception20
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB21_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB21_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB21_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp150:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops3MSEC1EPNS_2OpES2_
.Ltmp151:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB21_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp144:
	movl	$.L.str.26, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp145:
	jmp	.LBB21_2
.LBB21_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp147:
	movl	$.L.str.27, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp148:
	jmp	.LBB21_2
.LBB21_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp153:
	movl	$.L.str.28, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp154:
.LBB21_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB21_10:
.Ltmp155:
	jmp	.LBB21_4
.LBB21_7:
.Ltmp149:
	jmp	.LBB21_4
.LBB21_3:
.Ltmp146:
.LBB21_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB21_14
.LBB21_13:
.Ltmp152:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB21_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end21:
	.size	_ZN3ops10OpsBuilder3mseEPNS_2OpES2_, .Lfunc_end21-_ZN3ops10OpsBuilder3mseEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table21:
.Lexception20:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end20-.Lcst_begin20
.Lcst_begin20:
	.uleb128 .Lfunc_begin20-.Lfunc_begin20  # >> Call Site 1 <<
	.uleb128 .Ltmp150-.Lfunc_begin20        #   Call between .Lfunc_begin20 and .Ltmp150
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp150-.Lfunc_begin20        # >> Call Site 2 <<
	.uleb128 .Ltmp151-.Ltmp150              #   Call between .Ltmp150 and .Ltmp151
	.uleb128 .Ltmp152-.Lfunc_begin20        #     jumps to .Ltmp152
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp151-.Lfunc_begin20        # >> Call Site 3 <<
	.uleb128 .Ltmp144-.Ltmp151              #   Call between .Ltmp151 and .Ltmp144
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp144-.Lfunc_begin20        # >> Call Site 4 <<
	.uleb128 .Ltmp145-.Ltmp144              #   Call between .Ltmp144 and .Ltmp145
	.uleb128 .Ltmp146-.Lfunc_begin20        #     jumps to .Ltmp146
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp145-.Lfunc_begin20        # >> Call Site 5 <<
	.uleb128 .Ltmp147-.Ltmp145              #   Call between .Ltmp145 and .Ltmp147
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp147-.Lfunc_begin20        # >> Call Site 6 <<
	.uleb128 .Ltmp148-.Ltmp147              #   Call between .Ltmp147 and .Ltmp148
	.uleb128 .Ltmp149-.Lfunc_begin20        #     jumps to .Ltmp149
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp148-.Lfunc_begin20        # >> Call Site 7 <<
	.uleb128 .Ltmp153-.Ltmp148              #   Call between .Ltmp148 and .Ltmp153
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp153-.Lfunc_begin20        # >> Call Site 8 <<
	.uleb128 .Ltmp154-.Ltmp153              #   Call between .Ltmp153 and .Ltmp154
	.uleb128 .Ltmp155-.Lfunc_begin20        #     jumps to .Ltmp155
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp154-.Lfunc_begin20        # >> Call Site 9 <<
	.uleb128 .Lfunc_end21-.Ltmp154          #   Call between .Ltmp154 and .Lfunc_end21
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end20:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE # -- Begin function _ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE,@function
_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE: # @_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE
.Lfunc_begin21:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception21
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops5Shape7definedEv
	testb	%al, %al
	je	.LBB22_5
# %bb.1:
	movq	%r14, %rdi
	callq	_ZNK3ops5Shape5totalEv
	movl	%eax, %ebp
	movq	%r12, %rdi
	callq	_ZNK3ops5Shape5totalEv
	cmpl	%eax, %ebp
	jne	.LBB22_2
.LBB22_5:
	movl	$120, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp159:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops7ReshapeC1EPNS_2OpERKNS_5ShapeE
.Ltmp160:
# %bb.6:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB22_2:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp156:
	movl	$.L.str.29, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp157:
# %bb.3:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB22_4:
.Ltmp158:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB22_8
.LBB22_7:
.Ltmp161:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB22_8:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end22:
	.size	_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE, .Lfunc_end22-_ZN3ops10OpsBuilder7reshapeEPNS_2OpERKNS_5ShapeE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table22:
.Lexception21:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end21-.Lcst_begin21
.Lcst_begin21:
	.uleb128 .Lfunc_begin21-.Lfunc_begin21  # >> Call Site 1 <<
	.uleb128 .Ltmp159-.Lfunc_begin21        #   Call between .Lfunc_begin21 and .Ltmp159
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp159-.Lfunc_begin21        # >> Call Site 2 <<
	.uleb128 .Ltmp160-.Ltmp159              #   Call between .Ltmp159 and .Ltmp160
	.uleb128 .Ltmp161-.Lfunc_begin21        #     jumps to .Ltmp161
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp160-.Lfunc_begin21        # >> Call Site 3 <<
	.uleb128 .Ltmp156-.Ltmp160              #   Call between .Ltmp160 and .Ltmp156
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp156-.Lfunc_begin21        # >> Call Site 4 <<
	.uleb128 .Ltmp157-.Ltmp156              #   Call between .Ltmp156 and .Ltmp157
	.uleb128 .Ltmp158-.Lfunc_begin21        #     jumps to .Ltmp158
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp157-.Lfunc_begin21        # >> Call Site 5 <<
	.uleb128 .Lfunc_end22-.Ltmp157          #   Call between .Ltmp157 and .Lfunc_end22
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end21:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_: # @_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_
.Lfunc_begin22:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception22
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB23_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB23_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB23_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp168:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops7MSEGradC1EPNS_2OpES2_
.Ltmp169:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB23_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp162:
	movl	$.L.str.30, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp163:
	jmp	.LBB23_2
.LBB23_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp165:
	movl	$.L.str.31, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp166:
	jmp	.LBB23_2
.LBB23_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp171:
	movl	$.L.str.32, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp172:
.LBB23_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB23_10:
.Ltmp173:
	jmp	.LBB23_4
.LBB23_7:
.Ltmp167:
	jmp	.LBB23_4
.LBB23_3:
.Ltmp164:
.LBB23_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB23_14
.LBB23_13:
.Ltmp170:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB23_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end23:
	.size	_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_, .Lfunc_end23-_ZN3ops10OpsBuilder8mse_gradEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table23:
.Lexception22:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end22-.Lcst_begin22
.Lcst_begin22:
	.uleb128 .Lfunc_begin22-.Lfunc_begin22  # >> Call Site 1 <<
	.uleb128 .Ltmp168-.Lfunc_begin22        #   Call between .Lfunc_begin22 and .Ltmp168
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp168-.Lfunc_begin22        # >> Call Site 2 <<
	.uleb128 .Ltmp169-.Ltmp168              #   Call between .Ltmp168 and .Ltmp169
	.uleb128 .Ltmp170-.Lfunc_begin22        #     jumps to .Ltmp170
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp169-.Lfunc_begin22        # >> Call Site 3 <<
	.uleb128 .Ltmp162-.Ltmp169              #   Call between .Ltmp169 and .Ltmp162
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp162-.Lfunc_begin22        # >> Call Site 4 <<
	.uleb128 .Ltmp163-.Ltmp162              #   Call between .Ltmp162 and .Ltmp163
	.uleb128 .Ltmp164-.Lfunc_begin22        #     jumps to .Ltmp164
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp163-.Lfunc_begin22        # >> Call Site 5 <<
	.uleb128 .Ltmp165-.Ltmp163              #   Call between .Ltmp163 and .Ltmp165
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp165-.Lfunc_begin22        # >> Call Site 6 <<
	.uleb128 .Ltmp166-.Ltmp165              #   Call between .Ltmp165 and .Ltmp166
	.uleb128 .Ltmp167-.Lfunc_begin22        #     jumps to .Ltmp167
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp166-.Lfunc_begin22        # >> Call Site 7 <<
	.uleb128 .Ltmp171-.Ltmp166              #   Call between .Ltmp166 and .Ltmp171
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp171-.Lfunc_begin22        # >> Call Site 8 <<
	.uleb128 .Ltmp172-.Ltmp171              #   Call between .Ltmp171 and .Ltmp172
	.uleb128 .Ltmp173-.Lfunc_begin22        #     jumps to .Ltmp173
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp172-.Lfunc_begin22        # >> Call Site 9 <<
	.uleb128 .Lfunc_end23-.Ltmp172          #   Call between .Ltmp172 and .Lfunc_end23
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end22:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_: # @_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_
.Lfunc_begin23:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception23
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB24_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp174:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops8ReluGradC1EPNS_2OpES2_
.Ltmp175:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB24_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp177:
	movl	$.L.str.33, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp178:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB24_3:
.Ltmp179:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB24_7
.LBB24_6:
.Ltmp176:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB24_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end24:
	.size	_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_, .Lfunc_end24-_ZN3ops10OpsBuilder9relu_gradEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table24:
.Lexception23:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end23-.Lcst_begin23
.Lcst_begin23:
	.uleb128 .Lfunc_begin23-.Lfunc_begin23  # >> Call Site 1 <<
	.uleb128 .Ltmp174-.Lfunc_begin23        #   Call between .Lfunc_begin23 and .Ltmp174
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp174-.Lfunc_begin23        # >> Call Site 2 <<
	.uleb128 .Ltmp175-.Ltmp174              #   Call between .Ltmp174 and .Ltmp175
	.uleb128 .Ltmp176-.Lfunc_begin23        #     jumps to .Ltmp176
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp175-.Lfunc_begin23        # >> Call Site 3 <<
	.uleb128 .Ltmp177-.Ltmp175              #   Call between .Ltmp175 and .Ltmp177
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp177-.Lfunc_begin23        # >> Call Site 4 <<
	.uleb128 .Ltmp178-.Ltmp177              #   Call between .Ltmp177 and .Ltmp178
	.uleb128 .Ltmp179-.Lfunc_begin23        #     jumps to .Ltmp179
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp178-.Lfunc_begin23        # >> Call Site 5 <<
	.uleb128 .Lfunc_end24-.Ltmp178          #   Call between .Ltmp178 and .Lfunc_end24
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end23:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE # -- Begin function _ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE,@function
_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE: # @_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE
.Lfunc_begin24:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception24
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	(%rsi), %rax
	cmpq	8(%rsi), %rax
	je	.LBB25_1
# %bb.4:
	movq	%rsi, %r15
	movq	%rdi, %r14
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp180:
	leaq	8(%rsp), %rdi
	movq	%r15, %rsi
	callq	_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_
.Ltmp181:
# %bb.5:
.Ltmp183:
	leaq	8(%rsp), %rsi
	movq	%rbx, %rdi
	callq	_ZN3ops3SeqC1ESt6vectorIPNS_2OpESaIS3_EE
.Ltmp184:
# %bb.6:
	movq	8(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB25_8
# %bb.7:
	callq	_ZdlPv
.LBB25_8:                               # %_ZNSt6vectorIPN3ops2OpESaIS2_EED2Ev.exit
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB25_1:
	.cfi_def_cfa_offset 64
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp186:
	movl	$.L.str.34, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp187:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB25_3:
.Ltmp188:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB25_13
.LBB25_10:
.Ltmp185:
	movq	%rax, %r14
	movq	8(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB25_12
# %bb.11:
	callq	_ZdlPv
	jmp	.LBB25_12
.LBB25_9:
.Ltmp182:
	movq	%rax, %r14
.LBB25_12:                              # %_ZNSt6vectorIPN3ops2OpESaIS2_EED2Ev.exit13
	movq	%rbx, %rdi
	callq	_ZdlPv
.LBB25_13:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end25:
	.size	_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE, .Lfunc_end25-_ZN3ops10OpsBuilder3seqERKSt6vectorIPNS_2OpESaIS3_EE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table25:
.Lexception24:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end24-.Lcst_begin24
.Lcst_begin24:
	.uleb128 .Lfunc_begin24-.Lfunc_begin24  # >> Call Site 1 <<
	.uleb128 .Ltmp180-.Lfunc_begin24        #   Call between .Lfunc_begin24 and .Ltmp180
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp180-.Lfunc_begin24        # >> Call Site 2 <<
	.uleb128 .Ltmp181-.Ltmp180              #   Call between .Ltmp180 and .Ltmp181
	.uleb128 .Ltmp182-.Lfunc_begin24        #     jumps to .Ltmp182
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp183-.Lfunc_begin24        # >> Call Site 3 <<
	.uleb128 .Ltmp184-.Ltmp183              #   Call between .Ltmp183 and .Ltmp184
	.uleb128 .Ltmp185-.Lfunc_begin24        #     jumps to .Ltmp185
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp184-.Lfunc_begin24        # >> Call Site 4 <<
	.uleb128 .Ltmp186-.Ltmp184              #   Call between .Ltmp184 and .Ltmp186
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp186-.Lfunc_begin24        # >> Call Site 5 <<
	.uleb128 .Ltmp187-.Ltmp186              #   Call between .Ltmp186 and .Ltmp187
	.uleb128 .Ltmp188-.Lfunc_begin24        #     jumps to .Ltmp188
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp187-.Lfunc_begin24        # >> Call Site 6 <<
	.uleb128 .Lfunc_end25-.Ltmp187          #   Call between .Ltmp187 and .Lfunc_end25
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end24:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_,"axG",@progbits,_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_,comdat
	.weak	_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_ # -- Begin function _ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_,@function
_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_: # @_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	movq	8(%rsi), %rax
	movq	(%rsi), %rcx
	movq	%rax, %r12
	subq	%rcx, %r12
	sarq	$3, %r12
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rdi)
	movq	$0, 16(%rdi)
	cmpq	%rcx, %rax
	je	.LBB26_1
# %bb.2:
	movq	%rbx, %rdi
	movq	%r12, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv
	movq	%rax, %r15
	jmp	.LBB26_3
.LBB26_1:
	xorl	%r15d, %r15d
.LBB26_3:
	movq	%r15, (%rbx)
	movq	%r15, 8(%rbx)
	leaq	(%r15,%r12,8), %rax
	movq	%rax, 16(%rbx)
	movq	(%r14), %rsi
	movq	8(%r14), %r14
	subq	%rsi, %r14
	cmpq	$9, %r14
	jl	.LBB26_5
# %bb.4:
	movq	%r15, %rdi
	movq	%r14, %rdx
	callq	memmove@PLT
.LBB26_7:
	addq	%r14, %r15
	movq	%r15, 8(%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB26_5:
	.cfi_def_cfa_offset 48
	cmpq	$8, %r14
	jne	.LBB26_7
# %bb.6:
	movq	(%rsi), %rax
	movq	%rax, (%r15)
	jmp	.LBB26_7
.Lfunc_end26:
	.size	_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_, .Lfunc_end26-_ZNSt6vectorIPN3ops2OpESaIS2_EEC2ERKS4_
	.cfi_endproc
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_: # @_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_
.Lfunc_begin25:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception25
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB27_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB27_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB27_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp195:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops19SigmoidCrossEntropyC1EPNS_2OpES2_
.Ltmp196:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB27_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp189:
	movl	$.L.str.3, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp190:
	jmp	.LBB27_2
.LBB27_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp192:
	movl	$.L.str.35, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp193:
	jmp	.LBB27_2
.LBB27_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp198:
	movl	$.L.str.36, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp199:
.LBB27_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB27_10:
.Ltmp200:
	jmp	.LBB27_4
.LBB27_7:
.Ltmp194:
	jmp	.LBB27_4
.LBB27_3:
.Ltmp191:
.LBB27_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB27_14
.LBB27_13:
.Ltmp197:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB27_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end27:
	.size	_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_, .Lfunc_end27-_ZN3ops10OpsBuilder21sigmoid_cross_entropyEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table27:
.Lexception25:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end25-.Lcst_begin25
.Lcst_begin25:
	.uleb128 .Lfunc_begin25-.Lfunc_begin25  # >> Call Site 1 <<
	.uleb128 .Ltmp195-.Lfunc_begin25        #   Call between .Lfunc_begin25 and .Ltmp195
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp195-.Lfunc_begin25        # >> Call Site 2 <<
	.uleb128 .Ltmp196-.Ltmp195              #   Call between .Ltmp195 and .Ltmp196
	.uleb128 .Ltmp197-.Lfunc_begin25        #     jumps to .Ltmp197
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp196-.Lfunc_begin25        # >> Call Site 3 <<
	.uleb128 .Ltmp189-.Ltmp196              #   Call between .Ltmp196 and .Ltmp189
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp189-.Lfunc_begin25        # >> Call Site 4 <<
	.uleb128 .Ltmp190-.Ltmp189              #   Call between .Ltmp189 and .Ltmp190
	.uleb128 .Ltmp191-.Lfunc_begin25        #     jumps to .Ltmp191
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp190-.Lfunc_begin25        # >> Call Site 5 <<
	.uleb128 .Ltmp192-.Ltmp190              #   Call between .Ltmp190 and .Ltmp192
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp192-.Lfunc_begin25        # >> Call Site 6 <<
	.uleb128 .Ltmp193-.Ltmp192              #   Call between .Ltmp192 and .Ltmp193
	.uleb128 .Ltmp194-.Lfunc_begin25        #     jumps to .Ltmp194
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp193-.Lfunc_begin25        # >> Call Site 7 <<
	.uleb128 .Ltmp198-.Ltmp193              #   Call between .Ltmp193 and .Ltmp198
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp198-.Lfunc_begin25        # >> Call Site 8 <<
	.uleb128 .Ltmp199-.Ltmp198              #   Call between .Ltmp198 and .Ltmp199
	.uleb128 .Ltmp200-.Lfunc_begin25        #     jumps to .Ltmp200
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp199-.Lfunc_begin25        # >> Call Site 9 <<
	.uleb128 .Lfunc_end27-.Ltmp199          #   Call between .Ltmp199 and .Lfunc_end27
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end25:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_: # @_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_
.Lfunc_begin26:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception26
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB28_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB28_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB28_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp207:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops23SigmoidCrossEntropyGradC1EPNS_2OpES2_
.Ltmp208:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB28_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp201:
	movl	$.L.str.3, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp202:
	jmp	.LBB28_2
.LBB28_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp204:
	movl	$.L.str.35, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp205:
	jmp	.LBB28_2
.LBB28_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp210:
	movl	$.L.str.36, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp211:
.LBB28_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB28_10:
.Ltmp212:
	jmp	.LBB28_4
.LBB28_7:
.Ltmp206:
	jmp	.LBB28_4
.LBB28_3:
.Ltmp203:
.LBB28_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB28_14
.LBB28_13:
.Ltmp209:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB28_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end28:
	.size	_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_, .Lfunc_end28-_ZN3ops10OpsBuilder26sigmoid_cross_entropy_gradEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table28:
.Lexception26:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end26-.Lcst_begin26
.Lcst_begin26:
	.uleb128 .Lfunc_begin26-.Lfunc_begin26  # >> Call Site 1 <<
	.uleb128 .Ltmp207-.Lfunc_begin26        #   Call between .Lfunc_begin26 and .Ltmp207
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp207-.Lfunc_begin26        # >> Call Site 2 <<
	.uleb128 .Ltmp208-.Ltmp207              #   Call between .Ltmp207 and .Ltmp208
	.uleb128 .Ltmp209-.Lfunc_begin26        #     jumps to .Ltmp209
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp208-.Lfunc_begin26        # >> Call Site 3 <<
	.uleb128 .Ltmp201-.Ltmp208              #   Call between .Ltmp208 and .Ltmp201
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp201-.Lfunc_begin26        # >> Call Site 4 <<
	.uleb128 .Ltmp202-.Ltmp201              #   Call between .Ltmp201 and .Ltmp202
	.uleb128 .Ltmp203-.Lfunc_begin26        #     jumps to .Ltmp203
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp202-.Lfunc_begin26        # >> Call Site 5 <<
	.uleb128 .Ltmp204-.Ltmp202              #   Call between .Ltmp202 and .Ltmp204
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp204-.Lfunc_begin26        # >> Call Site 6 <<
	.uleb128 .Ltmp205-.Ltmp204              #   Call between .Ltmp204 and .Ltmp205
	.uleb128 .Ltmp206-.Lfunc_begin26        #     jumps to .Ltmp206
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp205-.Lfunc_begin26        # >> Call Site 7 <<
	.uleb128 .Ltmp210-.Ltmp205              #   Call between .Ltmp205 and .Ltmp210
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp210-.Lfunc_begin26        # >> Call Site 8 <<
	.uleb128 .Ltmp211-.Ltmp210              #   Call between .Ltmp210 and .Ltmp211
	.uleb128 .Ltmp212-.Lfunc_begin26        #     jumps to .Ltmp212
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp211-.Lfunc_begin26        # >> Call Site 9 <<
	.uleb128 .Lfunc_end28-.Ltmp211          #   Call between .Ltmp211 and .Lfunc_end28
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end26:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_: # @_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_
.Lfunc_begin27:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception27
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB29_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp213:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops11SigmoidGradC1EPNS_2OpES2_
.Ltmp214:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB29_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp216:
	movl	$.L.str.37, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp217:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB29_3:
.Ltmp218:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB29_7
.LBB29_6:
.Ltmp215:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB29_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end29:
	.size	_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_, .Lfunc_end29-_ZN3ops10OpsBuilder12sigmoid_gradEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table29:
.Lexception27:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end27-.Lcst_begin27
.Lcst_begin27:
	.uleb128 .Lfunc_begin27-.Lfunc_begin27  # >> Call Site 1 <<
	.uleb128 .Ltmp213-.Lfunc_begin27        #   Call between .Lfunc_begin27 and .Ltmp213
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp213-.Lfunc_begin27        # >> Call Site 2 <<
	.uleb128 .Ltmp214-.Ltmp213              #   Call between .Ltmp213 and .Ltmp214
	.uleb128 .Ltmp215-.Lfunc_begin27        #     jumps to .Ltmp215
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp214-.Lfunc_begin27        # >> Call Site 3 <<
	.uleb128 .Ltmp216-.Ltmp214              #   Call between .Ltmp214 and .Ltmp216
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp216-.Lfunc_begin27        # >> Call Site 4 <<
	.uleb128 .Ltmp217-.Ltmp216              #   Call between .Ltmp216 and .Ltmp217
	.uleb128 .Ltmp218-.Lfunc_begin27        #     jumps to .Ltmp218
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp217-.Lfunc_begin27        # >> Call Site 5 <<
	.uleb128 .Lfunc_end29-.Ltmp217          #   Call between .Ltmp217 and .Lfunc_end29
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end27:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder7softmaxEPNS_2OpE # -- Begin function _ZN3ops10OpsBuilder7softmaxEPNS_2OpE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder7softmaxEPNS_2OpE,@function
_ZN3ops10OpsBuilder7softmaxEPNS_2OpE:   # @_ZN3ops10OpsBuilder7softmaxEPNS_2OpE
.Lfunc_begin28:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception28
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB30_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r15
.Ltmp222:
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	_ZN3ops7SoftmaxC1EPNS_2OpE
.Ltmp223:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r15, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r15, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB30_1:
	.cfi_def_cfa_offset 32
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp219:
	movl	$.L.str.38, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp220:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB30_3:
.Ltmp221:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB30_7
.LBB30_6:
.Ltmp224:
	movq	%rax, %r14
	movq	%r15, %rdi
	callq	_ZdlPv
.LBB30_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end30:
	.size	_ZN3ops10OpsBuilder7softmaxEPNS_2OpE, .Lfunc_end30-_ZN3ops10OpsBuilder7softmaxEPNS_2OpE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table30:
.Lexception28:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end28-.Lcst_begin28
.Lcst_begin28:
	.uleb128 .Lfunc_begin28-.Lfunc_begin28  # >> Call Site 1 <<
	.uleb128 .Ltmp222-.Lfunc_begin28        #   Call between .Lfunc_begin28 and .Ltmp222
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp222-.Lfunc_begin28        # >> Call Site 2 <<
	.uleb128 .Ltmp223-.Ltmp222              #   Call between .Ltmp222 and .Ltmp223
	.uleb128 .Ltmp224-.Lfunc_begin28        #     jumps to .Ltmp224
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp223-.Lfunc_begin28        # >> Call Site 3 <<
	.uleb128 .Ltmp219-.Ltmp223              #   Call between .Ltmp223 and .Ltmp219
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp219-.Lfunc_begin28        # >> Call Site 4 <<
	.uleb128 .Ltmp220-.Ltmp219              #   Call between .Ltmp219 and .Ltmp220
	.uleb128 .Ltmp221-.Lfunc_begin28        #     jumps to .Ltmp221
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp220-.Lfunc_begin28        # >> Call Site 5 <<
	.uleb128 .Lfunc_end30-.Ltmp220          #   Call between .Ltmp220 and .Lfunc_end30
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end28:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_: # @_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_
.Lfunc_begin29:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception29
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB31_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB31_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB31_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp231:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops19SoftmaxCrossEntropyC1EPNS_2OpES2_
.Ltmp232:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB31_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp225:
	movl	$.L.str.3, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp226:
	jmp	.LBB31_2
.LBB31_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp228:
	movl	$.L.str.35, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp229:
	jmp	.LBB31_2
.LBB31_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp234:
	movl	$.L.str.36, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp235:
.LBB31_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB31_10:
.Ltmp236:
	jmp	.LBB31_4
.LBB31_7:
.Ltmp230:
	jmp	.LBB31_4
.LBB31_3:
.Ltmp227:
.LBB31_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB31_14
.LBB31_13:
.Ltmp233:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB31_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end31:
	.size	_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_, .Lfunc_end31-_ZN3ops10OpsBuilder21softmax_cross_entropyEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table31:
.Lexception29:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end29-.Lcst_begin29
.Lcst_begin29:
	.uleb128 .Lfunc_begin29-.Lfunc_begin29  # >> Call Site 1 <<
	.uleb128 .Ltmp231-.Lfunc_begin29        #   Call between .Lfunc_begin29 and .Ltmp231
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp231-.Lfunc_begin29        # >> Call Site 2 <<
	.uleb128 .Ltmp232-.Ltmp231              #   Call between .Ltmp231 and .Ltmp232
	.uleb128 .Ltmp233-.Lfunc_begin29        #     jumps to .Ltmp233
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp232-.Lfunc_begin29        # >> Call Site 3 <<
	.uleb128 .Ltmp225-.Ltmp232              #   Call between .Ltmp232 and .Ltmp225
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp225-.Lfunc_begin29        # >> Call Site 4 <<
	.uleb128 .Ltmp226-.Ltmp225              #   Call between .Ltmp225 and .Ltmp226
	.uleb128 .Ltmp227-.Lfunc_begin29        #     jumps to .Ltmp227
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp226-.Lfunc_begin29        # >> Call Site 5 <<
	.uleb128 .Ltmp228-.Ltmp226              #   Call between .Ltmp226 and .Ltmp228
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp228-.Lfunc_begin29        # >> Call Site 6 <<
	.uleb128 .Ltmp229-.Ltmp228              #   Call between .Ltmp228 and .Ltmp229
	.uleb128 .Ltmp230-.Lfunc_begin29        #     jumps to .Ltmp230
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp229-.Lfunc_begin29        # >> Call Site 7 <<
	.uleb128 .Ltmp234-.Ltmp229              #   Call between .Ltmp229 and .Ltmp234
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp234-.Lfunc_begin29        # >> Call Site 8 <<
	.uleb128 .Ltmp235-.Ltmp234              #   Call between .Ltmp234 and .Ltmp235
	.uleb128 .Ltmp236-.Lfunc_begin29        #     jumps to .Ltmp236
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp235-.Lfunc_begin29        # >> Call Site 9 <<
	.uleb128 .Lfunc_end31-.Ltmp235          #   Call between .Ltmp235 and .Lfunc_end31
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end29:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_: # @_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_
.Lfunc_begin30:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception30
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB32_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	cmpq	$2, %rax
	jne	.LBB32_6
# %bb.8:
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB32_9
# %bb.11:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp243:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops23SoftmaxCrossEntropyGradC1EPNS_2OpES2_
.Ltmp244:
# %bb.12:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB32_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp237:
	movl	$.L.str.3, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp238:
	jmp	.LBB32_2
.LBB32_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp240:
	movl	$.L.str.35, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp241:
	jmp	.LBB32_2
.LBB32_9:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp246:
	movl	$.L.str.36, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp247:
.LBB32_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB32_10:
.Ltmp248:
	jmp	.LBB32_4
.LBB32_7:
.Ltmp242:
	jmp	.LBB32_4
.LBB32_3:
.Ltmp239:
.LBB32_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB32_14
.LBB32_13:
.Ltmp245:
	movq	%rax, %rbx
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB32_14:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end32:
	.size	_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_, .Lfunc_end32-_ZN3ops10OpsBuilder26softmax_cross_entropy_gradEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table32:
.Lexception30:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end30-.Lcst_begin30
.Lcst_begin30:
	.uleb128 .Lfunc_begin30-.Lfunc_begin30  # >> Call Site 1 <<
	.uleb128 .Ltmp243-.Lfunc_begin30        #   Call between .Lfunc_begin30 and .Ltmp243
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp243-.Lfunc_begin30        # >> Call Site 2 <<
	.uleb128 .Ltmp244-.Ltmp243              #   Call between .Ltmp243 and .Ltmp244
	.uleb128 .Ltmp245-.Lfunc_begin30        #     jumps to .Ltmp245
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp244-.Lfunc_begin30        # >> Call Site 3 <<
	.uleb128 .Ltmp237-.Ltmp244              #   Call between .Ltmp244 and .Ltmp237
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp237-.Lfunc_begin30        # >> Call Site 4 <<
	.uleb128 .Ltmp238-.Ltmp237              #   Call between .Ltmp237 and .Ltmp238
	.uleb128 .Ltmp239-.Lfunc_begin30        #     jumps to .Ltmp239
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp238-.Lfunc_begin30        # >> Call Site 5 <<
	.uleb128 .Ltmp240-.Ltmp238              #   Call between .Ltmp238 and .Ltmp240
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp240-.Lfunc_begin30        # >> Call Site 6 <<
	.uleb128 .Ltmp241-.Ltmp240              #   Call between .Ltmp240 and .Ltmp241
	.uleb128 .Ltmp242-.Lfunc_begin30        #     jumps to .Ltmp242
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp241-.Lfunc_begin30        # >> Call Site 7 <<
	.uleb128 .Ltmp246-.Ltmp241              #   Call between .Ltmp241 and .Ltmp246
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp246-.Lfunc_begin30        # >> Call Site 8 <<
	.uleb128 .Ltmp247-.Ltmp246              #   Call between .Ltmp246 and .Ltmp247
	.uleb128 .Ltmp248-.Lfunc_begin30        #     jumps to .Ltmp248
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp247-.Lfunc_begin30        # >> Call Site 9 <<
	.uleb128 .Lfunc_end32-.Ltmp247          #   Call between .Ltmp247 and .Lfunc_end32
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end30:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_ # -- Begin function _ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_,@function
_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_: # @_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_
.Lfunc_begin31:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception31
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r12
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r12, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB33_1
# %bb.4:
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %r12
.Ltmp249:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZN3ops8TanhGradC1EPNS_2OpES2_
.Ltmp250:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r12, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r12, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB33_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp252:
	movl	$.L.str.39, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp253:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB33_3:
.Ltmp254:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB33_7
.LBB33_6:
.Ltmp251:
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB33_7:
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end33:
	.size	_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_, .Lfunc_end33-_ZN3ops10OpsBuilder9tanh_gradEPNS_2OpES2_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table33:
.Lexception31:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end31-.Lcst_begin31
.Lcst_begin31:
	.uleb128 .Lfunc_begin31-.Lfunc_begin31  # >> Call Site 1 <<
	.uleb128 .Ltmp249-.Lfunc_begin31        #   Call between .Lfunc_begin31 and .Ltmp249
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp249-.Lfunc_begin31        # >> Call Site 2 <<
	.uleb128 .Ltmp250-.Ltmp249              #   Call between .Ltmp249 and .Ltmp250
	.uleb128 .Ltmp251-.Lfunc_begin31        #     jumps to .Ltmp251
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp250-.Lfunc_begin31        # >> Call Site 3 <<
	.uleb128 .Ltmp252-.Ltmp250              #   Call between .Ltmp250 and .Ltmp252
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp252-.Lfunc_begin31        # >> Call Site 4 <<
	.uleb128 .Ltmp253-.Ltmp252              #   Call between .Ltmp252 and .Ltmp253
	.uleb128 .Ltmp254-.Lfunc_begin31        #     jumps to .Ltmp254
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp253-.Lfunc_begin31        # >> Call Site 5 <<
	.uleb128 .Lfunc_end33-.Ltmp253          #   Call between .Ltmp253 and .Lfunc_end33
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end31:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_ # -- Begin function _ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_,@function
_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_: # @_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_
.Lfunc_begin32:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception32
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r13
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rcx, %r14
	movq	%rdx, %r15
	movq	%rsi, %r12
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %r13
	movq	%r15, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%r13, %rdi
	movq	%rax, %rsi
	callq	_ZN3opsneERKNS_5ShapeES2_
	testb	%al, %al
	jne	.LBB34_1
# %bb.5:
	movq	%r14, %rdi
	callq	_ZNK3ops2Op9shape_getEv
	movq	%rax, %rdi
	callq	_ZNK3ops5Shape5ndimsEv
	testq	%rax, %rax
	jne	.LBB34_6
# %bb.8:
	movl	$120, %edi
	callq	_Znwm
	movq	%rax, %r13
.Ltmp258:
	movq	%rax, %rdi
	movq	%r12, %rsi
	movq	%r15, %rdx
	movq	%r14, %rcx
	callq	_ZN3ops6UpdateC1EPNS_8VariableEPNS_2OpES4_
.Ltmp259:
# %bb.9:
	movq	(%rbx), %rdi
	movq	%r13, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%r13, %rax
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB34_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp261:
	movl	$.L.str.25, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp262:
	jmp	.LBB34_2
.LBB34_6:
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %r14
.Ltmp255:
	movl	$.L.str.40, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp256:
.LBB34_2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%r14, %rdi
	callq	__cxa_throw
.LBB34_7:
.Ltmp257:
	jmp	.LBB34_4
.LBB34_3:
.Ltmp263:
.LBB34_4:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	__cxa_free_exception
	jmp	.LBB34_11
.LBB34_10:
.Ltmp260:
	movq	%rax, %rbx
	movq	%r13, %rdi
	callq	_ZdlPv
.LBB34_11:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end34:
	.size	_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_, .Lfunc_end34-_ZN3ops10OpsBuilder6updateEPNS_8VariableEPNS_2OpES4_
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table34:
.Lexception32:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end32-.Lcst_begin32
.Lcst_begin32:
	.uleb128 .Lfunc_begin32-.Lfunc_begin32  # >> Call Site 1 <<
	.uleb128 .Ltmp258-.Lfunc_begin32        #   Call between .Lfunc_begin32 and .Ltmp258
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp258-.Lfunc_begin32        # >> Call Site 2 <<
	.uleb128 .Ltmp259-.Ltmp258              #   Call between .Ltmp258 and .Ltmp259
	.uleb128 .Ltmp260-.Lfunc_begin32        #     jumps to .Ltmp260
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp259-.Lfunc_begin32        # >> Call Site 3 <<
	.uleb128 .Ltmp261-.Ltmp259              #   Call between .Ltmp259 and .Ltmp261
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp261-.Lfunc_begin32        # >> Call Site 4 <<
	.uleb128 .Ltmp262-.Ltmp261              #   Call between .Ltmp261 and .Ltmp262
	.uleb128 .Ltmp263-.Lfunc_begin32        #     jumps to .Ltmp263
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp262-.Lfunc_begin32        # >> Call Site 5 <<
	.uleb128 .Ltmp255-.Ltmp262              #   Call between .Ltmp262 and .Ltmp255
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp255-.Lfunc_begin32        # >> Call Site 6 <<
	.uleb128 .Ltmp256-.Ltmp255              #   Call between .Ltmp255 and .Ltmp256
	.uleb128 .Ltmp257-.Lfunc_begin32        #     jumps to .Ltmp257
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp256-.Lfunc_begin32        # >> Call Site 7 <<
	.uleb128 .Lfunc_end34-.Ltmp256          #   Call between .Ltmp256 and .Lfunc_end34
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end32:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb # -- Begin function _ZN3ops10OpsBuilder8variableERKNS_5ShapeEb
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb,@function
_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb: # @_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb
.Lfunc_begin33:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception33
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	%edx, %ebp
	movq	%rsi, %r15
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	callq	_ZNK3ops5Shape7definedEv
	testb	%al, %al
	je	.LBB35_1
# %bb.4:
	movl	$160, %edi
	callq	_Znwm
	movq	%rax, %r14
.Ltmp267:
	movzbl	%bpl, %edx
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	_ZN3ops8VariableC1ERKNS_5ShapeEb
.Ltmp268:
# %bb.5:
	movq	(%rbx), %rdi
	movq	%r14, %rsi
	callq	_ZN3ops5Graph7add_varEPNS_8VariableE
	movq	%r14, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB35_1:
	.cfi_def_cfa_offset 48
	movl	$16, %edi
	callq	__cxa_allocate_exception
	movq	%rax, %rbx
.Ltmp264:
	movl	$.L.str.41, %esi
	movq	%rax, %rdi
	callq	_ZNSt13runtime_errorC1EPKc
.Ltmp265:
# %bb.2:
	movl	$_ZTISt13runtime_error, %esi
	movl	$_ZNSt13runtime_errorD1Ev, %edx
	movq	%rbx, %rdi
	callq	__cxa_throw
.LBB35_3:
.Ltmp266:
	movq	%rax, %r15
	movq	%rbx, %rdi
	callq	__cxa_free_exception
	jmp	.LBB35_7
.LBB35_6:
.Ltmp269:
	movq	%rax, %r15
	movq	%r14, %rdi
	callq	_ZdlPv
.LBB35_7:
	movq	%r15, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end35:
	.size	_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb, .Lfunc_end35-_ZN3ops10OpsBuilder8variableERKNS_5ShapeEb
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table35:
.Lexception33:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end33-.Lcst_begin33
.Lcst_begin33:
	.uleb128 .Lfunc_begin33-.Lfunc_begin33  # >> Call Site 1 <<
	.uleb128 .Ltmp267-.Lfunc_begin33        #   Call between .Lfunc_begin33 and .Ltmp267
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp267-.Lfunc_begin33        # >> Call Site 2 <<
	.uleb128 .Ltmp268-.Ltmp267              #   Call between .Ltmp267 and .Ltmp268
	.uleb128 .Ltmp269-.Lfunc_begin33        #     jumps to .Ltmp269
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp268-.Lfunc_begin33        # >> Call Site 3 <<
	.uleb128 .Ltmp264-.Ltmp268              #   Call between .Ltmp268 and .Ltmp264
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp264-.Lfunc_begin33        # >> Call Site 4 <<
	.uleb128 .Ltmp265-.Ltmp264              #   Call between .Ltmp264 and .Ltmp265
	.uleb128 .Ltmp266-.Lfunc_begin33        #     jumps to .Ltmp266
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp265-.Lfunc_begin33        # >> Call Site 5 <<
	.uleb128 .Lfunc_end35-.Ltmp265          #   Call between .Ltmp265 and .Lfunc_end35
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end33:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE # -- Begin function _ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE,@function
_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE: # @_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE
.Lfunc_begin34:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception34
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r15
	movq	%rdi, %r14
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp270:
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	_ZN3ops11VectSigmoidC1EPNS_2OpE
.Ltmp271:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB36_2:
	.cfi_def_cfa_offset 32
.Ltmp272:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end36:
	.size	_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE, .Lfunc_end36-_ZN3ops10OpsBuilder12vect_sigmoidEPNS_2OpE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table36:
.Lexception34:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end34-.Lcst_begin34
.Lcst_begin34:
	.uleb128 .Lfunc_begin34-.Lfunc_begin34  # >> Call Site 1 <<
	.uleb128 .Ltmp270-.Lfunc_begin34        #   Call between .Lfunc_begin34 and .Ltmp270
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp270-.Lfunc_begin34        # >> Call Site 2 <<
	.uleb128 .Ltmp271-.Ltmp270              #   Call between .Ltmp270 and .Ltmp271
	.uleb128 .Ltmp272-.Lfunc_begin34        #     jumps to .Ltmp272
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp271-.Lfunc_begin34        # >> Call Site 3 <<
	.uleb128 .Lfunc_end36-.Ltmp271          #   Call between .Ltmp271 and .Lfunc_end36
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end34:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE # -- Begin function _ZN3ops10OpsBuilder9vect_reluEPNS_2OpE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE,@function
_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE: # @_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE
.Lfunc_begin35:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception35
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r15
	movq	%rdi, %r14
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp273:
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	_ZN3ops8VectReluC1EPNS_2OpE
.Ltmp274:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB37_2:
	.cfi_def_cfa_offset 32
.Ltmp275:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end37:
	.size	_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE, .Lfunc_end37-_ZN3ops10OpsBuilder9vect_reluEPNS_2OpE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table37:
.Lexception35:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end35-.Lcst_begin35
.Lcst_begin35:
	.uleb128 .Lfunc_begin35-.Lfunc_begin35  # >> Call Site 1 <<
	.uleb128 .Ltmp273-.Lfunc_begin35        #   Call between .Lfunc_begin35 and .Ltmp273
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp273-.Lfunc_begin35        # >> Call Site 2 <<
	.uleb128 .Ltmp274-.Ltmp273              #   Call between .Ltmp273 and .Ltmp274
	.uleb128 .Ltmp275-.Lfunc_begin35        #     jumps to .Ltmp275
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp274-.Lfunc_begin35        # >> Call Site 3 <<
	.uleb128 .Lfunc_end37-.Ltmp274          #   Call between .Ltmp274 and .Lfunc_end37
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end35:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf # -- Begin function _ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf,@function
_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf: # @_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf
.Lfunc_begin36:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception36
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movss	%xmm0, 12(%rsp)                 # 4-byte Spill
	movq	%rsi, %r15
	movq	%rdi, %r14
	movl	$120, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp276:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movss	12(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	callq	_ZN3ops13VectReluLeakyC1EPNS_2OpEf
.Ltmp277:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB38_2:
	.cfi_def_cfa_offset 48
.Ltmp278:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end38:
	.size	_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf, .Lfunc_end38-_ZN3ops10OpsBuilder15vect_relu_leakyEPNS_2OpEf
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table38:
.Lexception36:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end36-.Lcst_begin36
.Lcst_begin36:
	.uleb128 .Lfunc_begin36-.Lfunc_begin36  # >> Call Site 1 <<
	.uleb128 .Ltmp276-.Lfunc_begin36        #   Call between .Lfunc_begin36 and .Ltmp276
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp276-.Lfunc_begin36        # >> Call Site 2 <<
	.uleb128 .Ltmp277-.Ltmp276              #   Call between .Ltmp276 and .Ltmp277
	.uleb128 .Ltmp278-.Lfunc_begin36        #     jumps to .Ltmp278
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp277-.Lfunc_begin36        # >> Call Site 3 <<
	.uleb128 .Lfunc_end38-.Ltmp277          #   Call between .Ltmp277 and .Lfunc_end38
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end36:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE # -- Begin function _ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE
	.p2align	1, 0x90
	.type	_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE,@function
_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE: # @_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE
.Lfunc_begin37:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception37
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r15
	movq	%rdi, %r14
	movl	$112, %edi
	callq	_Znwm
	movq	%rax, %rbx
.Ltmp279:
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	_ZN3ops8VectTanhC1EPNS_2OpE
.Ltmp280:
# %bb.1:
	movq	(%r14), %rdi
	movq	%rbx, %rsi
	callq	_ZN3ops5Graph3addEPNS_2OpE
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB39_2:
	.cfi_def_cfa_offset 32
.Ltmp281:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZdlPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end39:
	.size	_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE, .Lfunc_end39-_ZN3ops10OpsBuilder9vect_tanhEPNS_2OpE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table39:
.Lexception37:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end37-.Lcst_begin37
.Lcst_begin37:
	.uleb128 .Lfunc_begin37-.Lfunc_begin37  # >> Call Site 1 <<
	.uleb128 .Ltmp279-.Lfunc_begin37        #   Call between .Lfunc_begin37 and .Ltmp279
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp279-.Lfunc_begin37        # >> Call Site 2 <<
	.uleb128 .Ltmp280-.Ltmp279              #   Call between .Ltmp279 and .Ltmp280
	.uleb128 .Ltmp281-.Lfunc_begin37        #     jumps to .Ltmp281
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp280-.Lfunc_begin37        # >> Call Site 3 <<
	.uleb128 .Lfunc_end39-.Ltmp280          #   Call between .Ltmp280 and .Lfunc_end39
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end37:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv,"axG",@progbits,_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv,comdat
	.weak	_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv # -- Begin function _ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv
	.p2align	1, 0x90
	.type	_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv,@function
_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv: # @_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movq	%rsi, %rax
	shrq	$60, %rax
	jne	.LBB40_1
# %bb.3:
	shlq	$3, %rsi
	movq	%rsi, %rdi
	popq	%rax
	.cfi_def_cfa_offset 8
	jmp	_Znwm                           # TAILCALL
.LBB40_1:
	.cfi_def_cfa_offset 16
	shrq	$61, %rsi
	je	.LBB40_2
# %bb.4:
	callq	_ZSt28__throw_bad_array_new_lengthv
.LBB40_2:
	callq	_ZSt17__throw_bad_allocv
.Lfunc_end40:
	.size	_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv, .Lfunc_end40-_ZNSt15__new_allocatorIPN3ops2OpEE8allocateEmPKv
	.cfi_endproc
                                        # -- End function
	.type	_ZZN3ops10OpsBuilder8instanceEvE7builder,@object # @_ZZN3ops10OpsBuilder8instanceEvE7builder
	.local	_ZZN3ops10OpsBuilder8instanceEvE7builder
	.comm	_ZZN3ops10OpsBuilder8instanceEvE7builder,8,8
	.type	_ZGVZN3ops10OpsBuilder8instanceEvE7builder,@object # @_ZGVZN3ops10OpsBuilder8instanceEvE7builder
	.local	_ZGVZN3ops10OpsBuilder8instanceEvE7builder
	.comm	_ZGVZN3ops10OpsBuilder8instanceEvE7builder,8,8
	.type	.L.str,@object                  # @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str:
	.asciz	"add: left and right must have the same shape"
	.size	.L.str, 45

	.type	.L.str.1,@object                # @.str.1
.L.str.1:
	.asciz	"var and m must have the same shape"
	.size	.L.str.1, 35

	.type	.L.str.2,@object                # @.str.2
.L.str.2:
	.asciz	"var and v must have the same shape"
	.size	.L.str.2, 35

	.type	.L.str.3,@object                # @.str.3
.L.str.3:
	.asciz	"y must be a matrix"
	.size	.L.str.3, 19

	.type	.L.str.4,@object                # @.str.4
.L.str.4:
	.asciz	"y_hat must be a matrix"
	.size	.L.str.4, 23

	.type	.L.str.5,@object                # @.str.5
.L.str.5:
	.asciz	"y and y_hat must have the same shape"
	.size	.L.str.5, 37

	.type	.L.str.6,@object                # @.str.6
.L.str.6:
	.asciz	"Conv2D:input must be a 4D tensor"
	.size	.L.str.6, 33

	.type	.L.str.7,@object                # @.str.7
.L.str.7:
	.asciz	"Conv2D:kernel must be a 4D tensor"
	.size	.L.str.7, 34

	.type	.L.str.8,@object                # @.str.8
.L.str.8:
	.asciz	"Conv2DBiasAdd:z must be a 4D tensor"
	.size	.L.str.8, 36

	.type	.L.str.9,@object                # @.str.9
.L.str.9:
	.asciz	"Conv2DBiasAdd:bias must be a 1D array"
	.size	.L.str.9, 38

	.type	.L.str.10,@object               # @.str.10
.L.str.10:
	.asciz	"Conv2DBiasAdd:z and bias shape are not corresponding"
	.size	.L.str.10, 53

	.type	.L.str.11,@object               # @.str.11
.L.str.11:
	.asciz	"Conv2DBiasAddGrad:z must be a 4D tensor"
	.size	.L.str.11, 40

	.type	.L.str.12,@object               # @.str.12
.L.str.12:
	.asciz	"LeakyReluGrad: z and dout must have the same shape"
	.size	.L.str.12, 51

	.type	.L.str.13,@object               # @.str.13
.L.str.13:
	.asciz	"log softmax input must be a matrix"
	.size	.L.str.13, 35

	.type	.L.str.14,@object               # @.str.14
.L.str.14:
	.asciz	"left operand must be a matrix"
	.size	.L.str.14, 30

	.type	.L.str.15,@object               # @.str.15
.L.str.15:
	.asciz	"right operand must be a matrix"
	.size	.L.str.15, 31

	.type	.L.str.16,@object               # @.str.16
.L.str.16:
	.asciz	"left[1] and right[0] differ"
	.size	.L.str.16, 28

	.type	.L.str.17,@object               # @.str.17
.L.str.17:
	.asciz	"x must be a matrix"
	.size	.L.str.17, 19

	.type	.L.str.18,@object               # @.str.18
.L.str.18:
	.asciz	"w must be a matrix"
	.size	.L.str.18, 19

	.type	.L.str.19,@object               # @.str.19
.L.str.19:
	.asciz	"b must be a vector"
	.size	.L.str.19, 19

	.type	.L.str.20,@object               # @.str.20
.L.str.20:
	.asciz	"x[1] and w[0] differ"
	.size	.L.str.20, 21

	.type	.L.str.21,@object               # @.str.21
.L.str.21:
	.asciz	"w[1] and b[0] differ"
	.size	.L.str.21, 21

	.type	.L.str.22,@object               # @.str.22
.L.str.22:
	.asciz	"right operand must be a vector"
	.size	.L.str.22, 31

	.type	.L.str.23,@object               # @.str.23
.L.str.23:
	.asciz	"arg must be a matrix"
	.size	.L.str.23, 21

	.type	.L.str.24,@object               # @.str.24
.L.str.24:
	.asciz	"axis must be 0 or 1"
	.size	.L.str.24, 20

	.type	.L.str.25,@object               # @.str.25
.L.str.25:
	.asciz	"var and dt must have the same shape"
	.size	.L.str.25, 36

	.type	.L.str.26,@object               # @.str.26
.L.str.26:
	.asciz	"MSE:y must be a matrix"
	.size	.L.str.26, 23

	.type	.L.str.27,@object               # @.str.27
.L.str.27:
	.asciz	"MSE:y_hat must be a matrix"
	.size	.L.str.27, 27

	.type	.L.str.28,@object               # @.str.28
.L.str.28:
	.asciz	"MSE: y and y_hat must have the same shape"
	.size	.L.str.28, 42

	.type	.L.str.29,@object               # @.str.29
.L.str.29:
	.asciz	"Reshape:"
	.size	.L.str.29, 9

	.type	.L.str.30,@object               # @.str.30
.L.str.30:
	.asciz	"MSEGrad: y must be a matrix"
	.size	.L.str.30, 28

	.type	.L.str.31,@object               # @.str.31
.L.str.31:
	.asciz	"MSEGrad: y_hat must be a matrix"
	.size	.L.str.31, 32

	.type	.L.str.32,@object               # @.str.32
.L.str.32:
	.asciz	"MSEGrad: y and y_hat must have the same shape"
	.size	.L.str.32, 46

	.type	.L.str.33,@object               # @.str.33
.L.str.33:
	.asciz	"ReluGrad: z and dout must have the same shape"
	.size	.L.str.33, 46

	.type	.L.str.34,@object               # @.str.34
.L.str.34:
	.asciz	"seq: ops can't be empty"
	.size	.L.str.34, 24

	.type	.L.str.35,@object               # @.str.35
.L.str.35:
	.asciz	"logits must be a matrix"
	.size	.L.str.35, 24

	.type	.L.str.36,@object               # @.str.36
.L.str.36:
	.asciz	"y and logits must have the same shape"
	.size	.L.str.36, 38

	.type	.L.str.37,@object               # @.str.37
.L.str.37:
	.asciz	"SigmoidGrad: sig_out and dout must have the same shape"
	.size	.L.str.37, 55

	.type	.L.str.38,@object               # @.str.38
.L.str.38:
	.asciz	"softmax input must be a matrix"
	.size	.L.str.38, 31

	.type	.L.str.39,@object               # @.str.39
.L.str.39:
	.asciz	"TanhGrad: tanh_out and dout must have the same shape"
	.size	.L.str.39, 53

	.type	.L.str.40,@object               # @.str.40
.L.str.40:
	.asciz	"coeff must be a scalar"
	.size	.L.str.40, 23

	.type	.L.str.41,@object               # @.str.41
.L.str.41:
	.asciz	"shape not fully defined"
	.size	.L.str.41, 24

	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.globl	_ZN3ops10OpsBuilderC1Ev
	.type	_ZN3ops10OpsBuilderC1Ev,@function
.set _ZN3ops10OpsBuilderC1Ev, _ZN3ops10OpsBuilderC2Ev
	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __gxx_personality_v0
	.addrsig_sym _Unwind_Resume
	.addrsig_sym _ZZN3ops10OpsBuilder8instanceEvE7builder
	.addrsig_sym _ZGVZN3ops10OpsBuilder8instanceEvE7builder
	.addrsig_sym _ZTISt13runtime_error
	.addrsig_sym __hip_cuid_

	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.type	__hip_cuid_,@object             ; @__hip_cuid_
	.section	.bss,"aw",@nobits
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               ; 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.amdgpu_metadata
---
amdhsa.kernels:  []
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
