#include <omp.h>
#include "matrix.cuh"
#include <cstdio>
#include <cassert>
#include <memory.h>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <random>
#include "matrix.cuh"
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
const int block_size = 256;

static std::mt19937 mt(time(NULL));
static std::normal_distribution<real> normal(0, 1);
matrix::matrix()
{
	this->m = this->n = 0;
	this->data = NULL;
}
matrix::matrix(int n)
{
	assert(n > 0);
	this->m = this->n = n;
	cudaMalloc(&(this->data), sizeof(real)*n*n);
}

matrix::matrix(int m, int n)
{
	assert(m > 0 && n > 0);
	this->m = m;
	this->n = n;
	cudaMalloc(&(this->data), sizeof(real)*m*n);
}

matrix::matrix(const matrix &a)
{
	this->m = a.m;
	this->n = a.n;
	cudaMalloc(&(this->data), sizeof(real)*a.m*a.n);
	cudaMemcpy(this->data, a.data, sizeof(real)*n*m, cudaMemcpyDeviceToDevice);
}

int matrix::row_num()
{
	return m;
}

int matrix::column_num()
{
	return n;
}
__global__ void transpose_kernel(real* x, real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < m*n; i += stride) {
		int k = i / n;
		int h = i%n;
		y[h*m + k] = x[k*n + h];
	}
}
matrix matrix::transpose()
{
	matrix res(n, m);
	int numBlocks = (n*m + block_size - 1) / block_size;
	transpose_kernel <<<numBlocks, block_size >>>(this->data, res.data, m, n);
	return res;
}


matrix matrix::row(int k)
{
	assert(k > 0 && k <= m);
	matrix res(1, n);
	cudaMemcpy(res.data, data + n*(k - 1), sizeof(real)*n, cudaMemcpyDeviceToDevice);
	return res;
}

matrix matrix::row(int h, int k)
{
	assert(h > 0 && k >= h && k <= m);
	int len = k - h + 1;
	matrix res(len, n);
	real* tmp = new real[len*n];
	cudaMemcpy(res.data, data + n*(h - 1), sizeof(real)*n*len, cudaMemcpyDeviceToDevice);
	return res;
}
__global__ void get_column(real* x,real *y, int m, int n, int k, int h)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	int len = (h - k + 1);
	for (int g = index; g < m*len; g+=stride) {
		int i = g / len;
		int j = g%len;
		y[g] = x[i*n + j + k];
	}
}
matrix matrix::column(int k)
{
	matrix res(m, 1);
	k--;
	int numBlocks = (m + block_size - 1) / block_size;
	get_column<<<numBlocks, block_size>>>(data, res.data, m, n, k, k);;
	return res;
}

matrix matrix::column(int h, int k)
{
	assert(k >= h);
	k--, h--;
	matrix res(m, k - h + 1);
	int numBlocks = (m*(k - h + 1) + block_size - 1) / block_size;
	get_column << <numBlocks, block_size >> >(data, res.data, m, n, h, k);
	return res;
}
real matrix::get(int k)
{
	real y;
	cudaMemcpy(&y, data + k - 1, sizeof(real), cudaMemcpyDeviceToHost);
	return y;
}

real matrix::get(int k, int h)
{
	k--;
	h--;
	real y;
	cudaMemcpy(&y, data + k*n + h, sizeof(real), cudaMemcpyDeviceToHost);
	return y;
}

void matrix::set(int k, real y)
{
	cudaMemcpy(data + k - 1, &y, sizeof(real), cudaMemcpyHostToDevice);
}

void matrix::set(int k, int h, real y)
{
	k--;
	h--;
	cudaMemcpy(data + k*n + h, &y, sizeof(real), cudaMemcpyHostToDevice);
}

real matrix::operator()(int k)
{
	return get(k);
}

real matrix::operator()(int k, int h)
{
	return get(k, h);
}


matrix& matrix::operator=(const matrix & a)
{
	if (&a != this) {
		if(this->data != NULL)
			cudaFree(this->data);
		//this->data = a.data;
		cudaMalloc(&(this->data), sizeof(real)*a.m * a.n);
		this->m = a.m;
		this->n = a.n;
		cudaMemcpy(this->data, a.data, sizeof(real)*n*m, cudaMemcpyDeviceToDevice);
	}
	return *this;
}
__global__ void add(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] + y[i];
}
__global__ void add_column(real *x, real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < m*n; k+=stride) {
		int i = k / n;
		x[k] += y[i];
	}
}
matrix operator+(matrix &a, matrix &b)
{
	if (b.n == 1 && a.m == b.m) {
		matrix res = a;
		int numBlocks = (a.m*a.n + block_size - 1) / block_size;
		add_column << <numBlocks, block_size >> >(res.data, b.data, a.m, a.n);
		return res;
	}
	else {
		assert(a.m == b.m && a.n == b.n);
		matrix res(a.m, a.n);
		int numBlocks = (a.n*a.m + block_size - 1) / block_size;
		add << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m * a.n);
		return res;
	}
	
}
__global__ void add(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] + y;
}
matrix operator+(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	add << <numBlocks, block_size>> >(a.data, b, res.data, a.m*a.n);
	return res;
}
__global__ void sub(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] - y[i];
}
matrix operator-(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	sub << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m * a.n);
	return res;
}
__global__ void sub(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] - y;
}
matrix operator-(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	sub << <numBlocks, block_size >> >(a.data, b, res.data, a.m*a.n);
	return res;
}
__global__ void mul_column(real *x, real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < m*n; k+=stride) {
		int i = k / n;
		x[k] *= y[i];
	}
}
__global__ void product(real* x, real *y, real* z,int m, int p, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int h = index; h < m*n; h += stride) {
		int i = h / n;
		int j = h%n;
		z[h] = 0;
		for (int k = 0; k < p; k++)
			z[h] += x[i*p + k] * y[k*n + j];
	}
}
matrix operator*(matrix & a, matrix & b)
{
	if (b.n == 1 && a.m == b.m) {
		matrix res = a;
		int numBlocks = (a.m*a.n + block_size - 1) / block_size;
		mul_column<<<numBlocks, block_size>>>(res.data, b.data, a.m, a.n);
		return res;
	}
	else {
		assert(a.n == b.m);
		matrix res(a.m, b.n);
		int numBlocks = (a.m*b.n + block_size - 1) / block_size;
		product << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m, a.n, b.n);
		return res;
	}
}
__global__ void transposed_product_second(real* x, real* y, real* z, int m, int p, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int h = index; h < m*n; h += stride) {
		int i = h / n;
		int j = h%n;
		z[h] = 0;
		for (int k = 0; k < p; k++)
			z[h] += x[i*p + k] * y[j*p + k];
	}
}
matrix transposed_mul(matrix & a, matrix & b)
{
	assert(a.n == b.n);
	matrix res(a.m, b.m);
	int numBlocks = (a.m*b.m + block_size - 1) / block_size;
	transposed_product_second<<<numBlocks, block_size>>>(a.data, b.data, res.data, a.m, a.n, b.m);
	return res;
}
__global__ void transposed_product_first(real* x, real* y, real* z, int m, int p, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int h = index; h < m*n; h += stride) {
		int i = h / n;
		int j = h%n;
		z[h] = 0;
		for (int k = 0; k < p; k++)
			z[h] += x[k*m + i] * y[k*n + j];
	}
}
void transposed_mul(matrix & a, matrix & b, matrix & res)
{
	assert(a.m == b.m);
	if (res.data != NULL)
		cudaFree(res.data);
	res.m = a.n;
	res.n = b.n;
	cudaMalloc(&res.data, sizeof(real)*a.n*b.n);
	int numBlocks = (a.n*b.n + block_size - 1) / block_size;
	transposed_product_first<< <numBlocks, block_size >> >(a.data, b.data, res.data, a.n, a.m, b.n);
}
__global__ void multiply(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] * y;
}
matrix operator*(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	multiply << <numBlocks, block_size>> >(a.data, b, res.data, a.m*a.n);
	return res;
}

matrix operator*(real a, matrix &b)
{
	matrix res(b.m, b.n);
	int numBlocks = (b.n*b.m + block_size - 1) / block_size;
	multiply << <numBlocks, block_size >> >(b.data, a, res.data, b.m*b.n);
	return res;
}
__global__ void divide(real* x, real* y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] /= y[i];
}
__global__ void divide(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] / y;
}
__global__ void divide(real* x, real y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] /= y;
}
void matrix::operator/=(real a)
{
	assert(a != 0);
	int numBlocks = (n*m + block_size - 1) / block_size;
	divide << <numBlocks, block_size >> >(data, a, m*n);
}
matrix operator/(matrix &a, real b)
{
	matrix res(a.m, a.n);
	assert(b != 0);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	divide << <numBlocks, block_size >> >(a.data, b, res.data, a.m*a.n);
	return res;
}
__global__ void add(real* x, real* y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] += y[i];
}

void matrix::operator+=(matrix &a)
{
	if (a.n == 1) {
		assert(m == a.m);
		int numBlocks = (a.m*a.n + block_size - 1) / block_size;
		add_column << <numBlocks, block_size >> >(this->data, a.data, m, n);
	}
	else {
		assert(m == a.m && n == a.n);
		int numBlocks = (a.n*a.m + block_size - 1) / block_size;
		add << <numBlocks, block_size >> >(this->data, a.data, m*n);
	}
}
__global__ void add(real* x, real y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] += y;
}
void matrix::operator+=(real a)
{
	int numBlocks = (n*m + block_size - 1) / block_size;
	add << <numBlocks, block_size >> >(this->data, a, m*n);
}
__global__ void sub(real* x, real* y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] -= y[i];
}
__global__ void sub_column(real *x, real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < m*n; k+=stride) {
		int i = k / n;
		x[k] -= y[i];
	}
}
void matrix::operator-=(matrix &a)
{
	if (a.n == 1) {
		assert(a.m == m);
		int numBlocks = (m*n + block_size - 1) / block_size;
		sub_column << <numBlocks, block_size >> >(this->data, a.data, m, n);
	}
	else {
		assert(a.m == m && a.n == n);
		int numBlocks = (a.n*a.m + block_size - 1) / block_size;
		sub << <numBlocks, block_size >> >(data, a.data, m*n);
	}
}

void matrix::operator-=(real a)
{
	int numBlocks = (n*m + block_size - 1) / block_size;
	add << <numBlocks, block_size >> >(this->data, -a, m*n);
}

void matrix::operator*=(matrix &a)
{
	assert(a.n == 1 && a.m == m);
	int numBlocks = (n*m + block_size - 1) / block_size;
	mul_column << <numBlocks, block_size >> >(this->data, a.data, m, n);
}
__global__ void multiply(real* x, real y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] *= y;
}
void matrix::operator*=(real a)
{
	int numBlocks = (n*m + block_size - 1) / block_size;
	multiply << <numBlocks, block_size >> >(this->data, a, m*n);
}

__global__ void divide_column(real *x,real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < m*n; k+=stride) {
		int i = k / n;
		x[k] /= y[i];
	}
}
void matrix::operator/=(matrix & a)
{
	if (a.n == 1) {
		assert(a.m == m);
		int numBlocks = (m*n + block_size - 1) / block_size;
		divide_column << <numBlocks, block_size >> >(this->data, a.data, m, n);
	}else if (a.m == m && a.n == n) {
		int numBlocks = (n*m + block_size - 1) / block_size;
		divide << <numBlocks, block_size >> >(this->data, a.data, m*n);
	}	
}

__global__ void cut_off(real *x, real y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] = x[i] >= y ? x[i] : 0.0f;
}
void matrix::mask(real x)
{
	int numBlocks = (n*m + block_size - 1) / block_size;
	cut_off << <numBlocks, block_size >> >(data, x, m*n);
}

void matrix::print()
{
	putchar('\n');
	real* tmp = (real*)malloc(sizeof(real)*m*n);
	cudaMemcpy(tmp, data, sizeof(real)*m*n, cudaMemcpyDeviceToHost);
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			printf("\t%8g", tmp[i*n + j]);
		}
		putchar('\n');
	}
	free(tmp);
}

void matrix::foutput(FILE * f)
{
	fwrite(&m, sizeof(int), 1, f);
	fwrite(&n, sizeof(int), 1, f);
	real* tmp = (real*)malloc(sizeof(real)*m*n);
	cudaMemcpy(tmp, data, sizeof(real)*m*n, cudaMemcpyDeviceToHost);
	fwrite(tmp, sizeof(real), m*n, f);
	free(tmp);
}

void matrix::fload(FILE * f)
{
	fread(&m, sizeof(int), 1, f);
	fread(&n, sizeof(int), 1, f);
	real* tmp = (real*)malloc(sizeof(real)*m*n);
	fread(tmp, sizeof(real), m*n, f);
	if (data != NULL)
		cudaFree(data);
	cudaMalloc(&data, sizeof(real)*m*n);
	cudaMemcpy(data, tmp, sizeof(real)*m*n, cudaMemcpyHostToDevice);
	free(tmp);
}

matrix::~matrix()
{
	if(this->data != NULL)
		cudaFree(this->data);
	this->data = NULL;
	m = n = 0;
}

void mul(matrix & a, matrix & b, matrix & res)
{
	assert(a.n == b.m);
	if (res.data != NULL)
		cudaFree(res.data);
	res.m = a.m;
	res.n = b.n;
	cudaMalloc(&res.data, sizeof(real)*a.m*b.n);
	int numBlocks = (a.m*b.n + block_size - 1) / block_size;
	product << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m, a.n, b.n);
}

void mul(matrix & a, real & b, matrix & res)
{
	res.m = a.m;
	res.n = a.n;
	if (res.data != NULL)
		free(res.data);
	cudaMalloc(&res.data, res.m*res.n*sizeof(real));
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	multiply << <numBlocks, 256 >> >(a.data, b, res.data, a.m*a.n);
}

__global__ void greater_than(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] > y ? 1.0f : 0.0f;
}
matrix operator>(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	greater_than << <numBlocks,block_size >> >(a.data, b, res.data, a.m*a.n);
	return res;
}
__global__ void greater_than(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] > y[i] ? 1.0f : 0.0f;
}
matrix operator>(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	greater_than << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m*a.n);
	return res;
}

__global__ void greater_equal(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] >= y ? 1.0f : 0.0f;
}
matrix operator>=(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	greater_equal << <numBlocks, block_size >> >(a.data, b, res.data, a.m*a.n);
	return res;
}
__global__ void greater_equal(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] >= y[i] ? 1.0f : 0.0f;
}
matrix operator>=(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	greater_equal << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m*a.n);
	return res;
}
__global__ void equal(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] == y ? 1.0f : 0.0f;
}
matrix operator==(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	equal << <numBlocks, block_size >> >(a.data, b, res.data, a.m*a.n);
	return res;
}
__global__ void equal(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] == y[i] ? 1.0f : 0.0f;
}
matrix operator==(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	equal << <numBlocks, block_size>> >(a.data, b.data, res.data, a.m*a.n);
	return res;
}
__global__ void maximum(real* x, real y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] > y ? x[i] : y;
}
__global__ void maximum(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] > y[i]?x[i] : y[i];
}
matrix max(real a, matrix &b)
{
	matrix res(b.m, b.n);
	int numBlocks = (b.n*b.m + block_size - 1) / block_size;
	maximum << <numBlocks, block_size>> >(b.data, a, res.data, b.m*b.n);
	return res;
}

matrix max(matrix &a, real b)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	maximum << <numBlocks, block_size>> >(a.data, b, res.data, a.m*a.n);
	return res;
}

matrix max(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	maximum << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m*a.n);
	return res;
}

int size(matrix &a, int d)
{
	assert(d == 1 || d == 2);
	if (d == 1)
		return a.m;
	else
		return a.n;
}

matrix size(matrix & a)
{
	matrix res(1, 2);
	real tmp[2] = {(real)a.m, (real)a.n};
	cudaMemcpy(res.data, tmp, 2 * sizeof(real), cudaMemcpyHostToDevice);
	return res;
}
__global__ void sum_kernel(real* x, real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < m; i += stride) {
		y[i] = 0;
		for (int j = 0; j < n; j++) {
			y[i] += x[i*n + j];
		}
	}
}
matrix sum(matrix & a)
{
	matrix res(a.m, 1);
	int numBlocks = (a.m + block_size - 1) / block_size;
	sum_kernel<<<numBlocks, block_size>>>(a.data, res.data, a.m, a.n);
	return res;
}
__global__ void sum_all_kernel(real* x, real* y, int m, int n)
{
	for (int i = 0; i < m*n; i++) {
		*y += x[i];
	}
}
real sum_all(matrix& a)
{
	real* y, res;
	cudaMalloc(&y, sizeof(real));
	sum_all_kernel<<<1,1>>>(a.data, y, a.m, a.n);
	cudaMemcpy(&res, y, sizeof(real), cudaMemcpyDeviceToHost);
	cudaFree(y);
	return res;
}
__global__ void norm2_kernel(real* x, real* y, int m, int n)
{
	/*int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < m; i += stride) {
		y[index] = x[i] * x[i];
	}*/
	for (int i = 0; i < m*n; i++) {
		*y += x[i] * x[i];
	}
}
real norm2(matrix & a)
{
	real* y, res;
	cudaMalloc(&y,sizeof(real));
	norm2_kernel<<<1,1>>>(a.data, y, a.m, a.n);
	cudaMemcpy(&res, y, sizeof(real), cudaMemcpyDeviceToHost);
	cudaFree(y);
	return sqrt(res);
}
__global__ void mean_kernel(real* x, real* y, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < m; i += stride) {
		y[i] = 0;
		for (int j = 0; j < n; j++) {
			y[i] += x[i*n + j];
		}
		y[i] /= n;
	}
}
matrix mean(matrix & a)
{
	matrix res(a.m, 1);
	int numBlocks = (a.m + block_size - 1) / block_size;
	mean_kernel << <numBlocks, block_size >> >(a.data, res.data, a.m, a.n);
	return res;
}

__global__ void set(real* x, real y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		x[i] = y;
}
matrix zeros(int n)
{
	matrix res(n);
	int numBlocks = (n*n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(res.data, 0.0f, n*n);
	return res;
}

matrix zeros(matrix & a)
{
	real tmp[2];
	cudaMemcpy(tmp, a.data, 2*sizeof(real), cudaMemcpyDeviceToHost);
	int m = tmp[0];
	int n = tmp[1];
	matrix res(m, n);
	int numBlocks = (m*n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(res.data, 0.0f, m*n);
	return res;
}

matrix zeros(int m, int n)
{
	matrix res(m, n);
	int numBlocks = (m*n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(res.data, 0.0f, m*n);
	return res;
}
matrix ones(int n)
{
	matrix res(n);
	int numBlocks = (n*n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(res.data, 1.0f, n*n);
	return res;
}
matrix ones(int m, int n)
{
	matrix res(m, n);
	int numBlocks = (m*n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(res.data, 1.0f, m*n);
	return res;
}
matrix ones(matrix & a)
{
	real tmp[2];
	cudaMemcpy(tmp, a.data, 2*sizeof(real), cudaMemcpyDeviceToHost);
	int m = tmp[0];
	int n = tmp[1];
	matrix res(m, n);
	int numBlocks = (m*n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(res.data, 1.0f, m*n);
	return res;
}
__global__ void square_root(real* x, real* y, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = gridDim.x*blockDim.x;
	for (int i = index; i < n; i += stride)
		y[i] = sqrt((double)x[i]);
}
matrix sqrt(matrix &a)
{
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	square_root << <numBlocks, block_size>> >(a.data, res.data, a.m*a.n);
	return res;
}
__global__ void multiply(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] * y[i];
}
matrix dot_mul(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	multiply << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m*a.n);
	return res;
}
__global__ void divide(real* x, real* y, real* z, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int i = index; i < n; i += stride)
		z[i] = x[i] / y[i];
}
matrix dot_div(matrix &a, matrix &b)
{
	assert(a.m == b.m && a.n == b.n);
	matrix res(a.m, a.n);
	int numBlocks = (a.n*a.m + block_size - 1) / block_size;
	divide << <numBlocks, block_size >> >(a.data, b.data, res.data, a.m*a.n);
	return res;
}
__global__ void get_dx_kernel(real* dx, real* X, real* y, real* loss, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int p = index; p < n; p+= stride) {
		loss[p] = 0;
		for (int i = 0; i < m; i++) {
			int k = y[p] - 1;
			if (i != k && X[i*n + p] + 1 > X[k*n + p]) {
				dx[i*n + p]++;
				dx[k*n + p]--;
				loss[p] += X[i*n + p] + 1 - X[k*n + p];
			}
		}
	}
}
real get_dx(matrix& dx, matrix& X, matrix & y)
{
	if (dx.data != NULL)
		cudaFree(dx.data);
	dx.m = X.m;
	dx.n = X.n;
	matrix loss(1, dx.n);
	cudaMalloc(&dx.data, sizeof(real)*dx.m*dx.n);
	int numBlocks = (dx.n + block_size - 1) / block_size;
	set << <numBlocks, block_size >> >(dx.data, 0, dx.m*dx.n);
	get_dx_kernel<<<numBlocks, block_size>>>(dx.data, X.data, y.data, loss.data, dx.m, dx.n);
	return sum(loss)(1);
}
__global__ void get_dW_kernel(real* dW, real* dx, real* Y, int m, int n, int b)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < m*n; k += stride) {
		int i = k / n;
		int j = k%n;
		dW[k] = 0;
		for (int h = 0; h < b; h++)
			dW[k] += dx[i*b + h] * Y[j*b + h];
	}
}
void get_dW(matrix & dW, matrix & dx, matrix & Y)
{
	dW.m = dx.m;
	dW.n = Y.m;
	if (dW.data != NULL)
		cudaFree(dW.data);
	cudaMalloc(&dW.data, sizeof(real)*dW.m*dW.n);
	int numBlocks = (dW.n*dW.m + block_size - 1) / block_size;
	get_dW_kernel<<<numBlocks,block_size>>>(dW.data, dx.data, Y.data, dW.m, dW.n, Y.n);
}
__global__ void update_dX1_kernel(real* dx,real* dx_next, real* W, real* Y, int m, int n , int b)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < n*b; k += stride) {
		int i = k / b;
		int j = k%b;
		dx_next[k] = 0;
		if (Y[k] <= 0)
			break;
		for (int h = 0; h < m; h++)
			dx_next[k] += W[h*n + i] * dx[h*b + j];
	}
}
void update_dX1(matrix & W, matrix & dx, matrix & Y)
{
	real* dx_next;
	cudaMalloc(&dx_next, sizeof(real)*W.n*dx.n);
	assert(dx.m == W.m && dx.n == Y.n && Y.m == W.n);
	int numBlocks = (W.n*dx.n + block_size - 1) / block_size;
	update_dX1_kernel<<<numBlocks,block_size>>>(dx.data, dx_next, W.data, Y.data, W.m, W.n, dx.n);
	cudaFree(dx.data);
	dx.data = dx_next;
	dx.m = Y.m;
	dx.n = Y.n;
}
__global__ void update_dX2_kernel(real* dx, real* gamma, real* sigma, int m, int n)
{
	int index = blockDim.x*blockIdx.x + threadIdx.x;
	int stride = blockDim.x * gridDim.x;
	for (int k = index; k < m*n; k += stride) {
		int i = k / n;
		dx[k] *= gamma[i] / sigma[i];
	}
}
void update_dX2(matrix& dx, matrix& gamma, matrix& sigma)
{
	int numBlocks = (dx.n*dx.m + block_size - 1) / block_size;
	update_dX2_kernel << <numBlocks, block_size >> >(dx.data, gamma.data, sigma.data, dx.m, dx.n);
}

matrix randn(int m, int n)
{
	matrix res(m, n);
	real* tmp = (real*)malloc(sizeof(real)*m*n);
	for (int i = 0; i < m*n; i++)
		tmp[i] = normal(mt);
	cudaMemcpy(res.data, tmp, sizeof(real)*m*n, cudaMemcpyHostToDevice);
	free(tmp);
	return res;
}

matrix randn(int n)
{
	matrix res(n);
	real* tmp = (real*)malloc(sizeof(real)*n*n);
	for (int i = 0; i < n*n; i++)
		tmp[i] = normal(mt);
	cudaMemcpy(res.data, tmp, sizeof(real)*n*n, cudaMemcpyHostToDevice);
	free(tmp);
	return res;
}
	.file	"tmpxft_0037a927_00000000-6_matrix.cudafe1.cpp"
	.text
#APP

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB4193:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE4193:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.type	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0, @function
_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0:
.LFB4976:
	.cfi_startproc
	jmp	cudaLaunchKernel@PLT
	.cfi_endproc
.LFE4976:
	.size	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0, .-_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	.type	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0, @function
_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0:
.LFB4977:
	.cfi_startproc
	jmp	cudaMalloc@PLT
	.cfi_endproc
.LFE4977:
	.size	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0, .-_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	.align 2
	.globl	_ZN6matrixC2Ev
	.type	_ZN6matrixC2Ev, @function
_ZN6matrixC2Ev:
.LFB4109:
	.cfi_startproc
	endbr64
	xorl	%eax, %eax
	movq	%rax, (%rdi)
	movq	%rax, 8(%rdi)
	ret
	.cfi_endproc
.LFE4109:
	.size	_ZN6matrixC2Ev, .-_ZN6matrixC2Ev
	.globl	_ZN6matrixC1Ev
	.set	_ZN6matrixC1Ev,_ZN6matrixC2Ev
	.align 2
	.globl	_ZN6matrixC2Ei
	.type	_ZN6matrixC2Ei, @function
_ZN6matrixC2Ei:
.LFB4112:
	.cfi_startproc
	endbr64
	movl	%esi, 4(%rdi)
	xorl	%eax, %eax
	addq	$8, %rdi
	movl	%esi, -8(%rdi)
	movslq	%esi, %rsi
	imulq	%rsi, %rsi
	movq	%rax, (%rdi)
	salq	$3, %rsi
	jmp	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	.cfi_endproc
.LFE4112:
	.size	_ZN6matrixC2Ei, .-_ZN6matrixC2Ei
	.globl	_ZN6matrixC1Ei
	.set	_ZN6matrixC1Ei,_ZN6matrixC2Ei
	.align 2
	.globl	_ZN6matrixC2Eii
	.type	_ZN6matrixC2Eii, @function
_ZN6matrixC2Eii:
.LFB4115:
	.cfi_startproc
	endbr64
	movl	%esi, (%rdi)
	movslq	%esi, %rsi
	xorl	%eax, %eax
	addq	$8, %rdi
	movl	%edx, -4(%rdi)
	movslq	%edx, %rdx
	imulq	%rdx, %rsi
	movq	%rax, (%rdi)
	salq	$3, %rsi
	jmp	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	.cfi_endproc
.LFE4115:
	.size	_ZN6matrixC2Eii, .-_ZN6matrixC2Eii
	.globl	_ZN6matrixC1Eii
	.set	_ZN6matrixC1Eii,_ZN6matrixC2Eii
	.align 2
	.globl	_ZN6matrixC2ERKS_
	.type	_ZN6matrixC2ERKS_, @function
_ZN6matrixC2ERKS_:
.LFB4118:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	xorl	%edx, %edx
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	leaq	8(%rdi), %rdi
	pushq	%rax
	.cfi_def_cfa_offset 32
	movslq	(%rsi), %rsi
	movq	%rdx, (%rdi)
	movslq	4(%rbp), %rdx
	movq	%rsi, %rax
	movl	%esi, -8(%rdi)
	imulq	%rdx, %rax
	movl	%edx, -4(%rdi)
	leaq	0(,%rax,8), %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movslq	4(%rbx), %rdx
	movslq	(%rbx), %rax
	movl	$3, %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	imulq	%rax, %rdx
	popq	%r8
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	salq	$3, %rdx
	jmp	cudaMemcpy@PLT
	.cfi_endproc
.LFE4118:
	.size	_ZN6matrixC2ERKS_, .-_ZN6matrixC2ERKS_
	.globl	_ZN6matrixC1ERKS_
	.set	_ZN6matrixC1ERKS_,_ZN6matrixC2ERKS_
	.align 2
	.globl	_ZN6matrix7row_numEv
	.type	_ZN6matrix7row_numEv, @function
_ZN6matrix7row_numEv:
.LFB4120:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	ret
	.cfi_endproc
.LFE4120:
	.size	_ZN6matrix7row_numEv, .-_ZN6matrix7row_numEv
	.align 2
	.globl	_ZN6matrix10column_numEv
	.type	_ZN6matrix10column_numEv, @function
_ZN6matrix10column_numEv:
.LFB4121:
	.cfi_startproc
	endbr64
	movl	4(%rdi), %eax
	ret
	.cfi_endproc
.LFE4121:
	.size	_ZN6matrix10column_numEv, .-_ZN6matrix10column_numEv
	.align 2
	.globl	_ZN6matrix3getEi
	.type	_ZN6matrix3getEi, @function
_ZN6matrix3getEi:
.LFB4127:
	.cfi_startproc
	endbr64
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movslq	%esi, %rsi
	movl	$2, %ecx
	movl	$8, %edx
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	movq	8(%rdi), %rax
	movq	%rsp, %rdi
	leaq	-8(%rax,%rsi,8), %rsi
	call	cudaMemcpy@PLT
	movsd	(%rsp), %xmm0
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	je	.L12
	call	__stack_chk_fail@PLT
.L12:
	addq	$24, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4127:
	.size	_ZN6matrix3getEi, .-_ZN6matrix3getEi
	.align 2
	.globl	_ZN6matrix3getEii
	.type	_ZN6matrix3getEii, @function
_ZN6matrix3getEii:
.LFB4128:
	.cfi_startproc
	endbr64
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	decl	%esi
	decl	%edx
	movl	$2, %ecx
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	imull	4(%rdi), %esi
	movq	8(%rdi), %rax
	movslq	%edx, %rdx
	movq	%rsp, %rdi
	movslq	%esi, %rsi
	addq	%rdx, %rsi
	movl	$8, %edx
	leaq	(%rax,%rsi,8), %rsi
	call	cudaMemcpy@PLT
	movsd	(%rsp), %xmm0
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	je	.L16
	call	__stack_chk_fail@PLT
.L16:
	addq	$24, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4128:
	.size	_ZN6matrix3getEii, .-_ZN6matrix3getEii
	.align 2
	.globl	_ZN6matrix3setEid
	.type	_ZN6matrix3setEid, @function
_ZN6matrix3setEid:
.LFB4129:
	.cfi_startproc
	endbr64
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movq	8(%rdi), %rdx
	movslq	%esi, %rsi
	movl	$1, %ecx
	leaq	8(%rsp), %rax
	movsd	%xmm0, 8(%rsp)
	leaq	-8(%rdx,%rsi,8), %rdi
	movl	$8, %edx
	movq	%rax, %rsi
	call	cudaMemcpy@PLT
	addq	$24, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4129:
	.size	_ZN6matrix3setEid, .-_ZN6matrix3setEid
	.align 2
	.globl	_ZN6matrix3setEiid
	.type	_ZN6matrix3setEiid, @function
_ZN6matrix3setEiid:
.LFB4130:
	.cfi_startproc
	endbr64
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	decl	%esi
	decl	%edx
	movl	$1, %ecx
	imull	4(%rdi), %esi
	movslq	%edx, %rdx
	leaq	8(%rsp), %rax
	movsd	%xmm0, 8(%rsp)
	movslq	%esi, %rsi
	addq	%rdx, %rsi
	movq	8(%rdi), %rdx
	leaq	(%rdx,%rsi,8), %rdi
	movl	$8, %edx
	movq	%rax, %rsi
	call	cudaMemcpy@PLT
	addq	$24, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4130:
	.size	_ZN6matrix3setEiid, .-_ZN6matrix3setEiid
	.align 2
	.globl	_ZN6matrixclEi
	.type	_ZN6matrixclEi, @function
_ZN6matrixclEi:
.LFB4131:
	.cfi_startproc
	endbr64
	jmp	_ZN6matrix3getEi
	.cfi_endproc
.LFE4131:
	.size	_ZN6matrixclEi, .-_ZN6matrixclEi
	.align 2
	.globl	_ZN6matrixclEii
	.type	_ZN6matrixclEii, @function
_ZN6matrixclEii:
.LFB4132:
	.cfi_startproc
	endbr64
	jmp	_ZN6matrix3getEii
	.cfi_endproc
.LFE4132:
	.size	_ZN6matrixclEii, .-_ZN6matrixclEii
	.align 2
	.globl	_ZN6matrixaSERKS_
	.type	_ZN6matrixaSERKS_, @function
_ZN6matrixaSERKS_:
.LFB4133:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	pushq	%rcx
	.cfi_def_cfa_offset 32
	cmpq	%rdi, %rsi
	je	.L25
	movq	8(%rdi), %rdi
	movq	%rsi, %rbp
	testq	%rdi, %rdi
	je	.L26
	call	cudaFree@PLT
.L26:
	movslq	4(%rbp), %rax
	movslq	0(%rbp), %rsi
	leaq	8(%rbx), %rdi
	imulq	%rax, %rsi
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movslq	0(%rbp), %rax
	movslq	4(%rbp), %rdx
	movl	$3, %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	%edx, 4(%rbx)
	imulq	%rax, %rdx
	movl	%eax, (%rbx)
	salq	$3, %rdx
	call	cudaMemcpy@PLT
.L25:
	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
.LFE4133:
	.size	_ZN6matrixaSERKS_, .-_ZN6matrixaSERKS_
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"\t%8g"
	.text
	.align 2
	.globl	_ZN6matrix5printEv
	.type	_ZN6matrix5printEv, @function
_ZN6matrix5printEv:
.LFB4153:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	xorl	%r13d, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	movq	%rdi, %rbx
	movl	$10, %edi
	call	putchar@PLT
	movslq	(%rbx), %r12
	movslq	4(%rbx), %rax
	imulq	%rax, %r12
	salq	$3, %r12
	movq	%r12, %rdi
	call	malloc@PLT
	movq	8(%rbx), %rsi
	movq	%r12, %rdx
	movl	$2, %ecx
	movq	%rax, %rdi
	movq	%rax, %rbp
	leaq	.LC0(%rip), %r12
	call	cudaMemcpy@PLT
.L32:
	cmpl	%r13d, (%rbx)
	jle	.L37
	xorl	%r14d, %r14d
.L34:
	movl	4(%rbx), %eax
	cmpl	%r14d, %eax
	jle	.L38
	imull	%r13d, %eax
	movq	%r12, %rsi
	movl	$2, %edi
	addl	%r14d, %eax
	incl	%r14d
	cltq
	movsd	0(%rbp,%rax,8), %xmm0
	movb	$1, %al
	call	__printf_chk@PLT
	jmp	.L34
.L38:
	movl	$10, %edi
	incl	%r13d
	call	putchar@PLT
	jmp	.L32
.L37:
	popq	%rbx
	.cfi_def_cfa_offset 40
	movq	%rbp, %rdi
	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
	jmp	free@PLT
	.cfi_endproc
.LFE4153:
	.size	_ZN6matrix5printEv, .-_ZN6matrix5printEv
	.align 2
	.globl	_ZN6matrix7foutputEP8_IO_FILE
	.type	_ZN6matrix7foutputEP8_IO_FILE, @function
_ZN6matrix7foutputEP8_IO_FILE:
.LFB4154:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rsi, %r13
	movq	%rsi, %rcx
	movl	$1, %edx
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	$4, %esi
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rdi, %rbx
	pushq	%rax
	.cfi_def_cfa_offset 48
	call	fwrite@PLT
	movq	%r13, %rcx
	leaq	4(%rbx), %rdi
	movl	$1, %edx
	movl	$4, %esi
	call	fwrite@PLT
	movslq	(%rbx), %rbp
	movslq	4(%rbx), %rax
	imulq	%rax, %rbp
	salq	$3, %rbp
	movq	%rbp, %rdi
	call	malloc@PLT
	movq	8(%rbx), %rsi
	movq	%rbp, %rdx
	movl	$2, %ecx
	movq	%rax, %rdi
	movq	%rax, %r12
	call	cudaMemcpy@PLT
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r12, %rdi
	movq	%r13, %rcx
	movl	$8, %esi
	movslq	%edx, %rdx
	call	fwrite@PLT
	popq	%rdx
	.cfi_def_cfa_offset 40
	movq	%r12, %rdi
	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
	jmp	free@PLT
	.cfi_endproc
.LFE4154:
	.size	_ZN6matrix7foutputEP8_IO_FILE, .-_ZN6matrix7foutputEP8_IO_FILE
	.align 2
	.globl	_ZN6matrix5floadEP8_IO_FILE
	.type	_ZN6matrix5floadEP8_IO_FILE, @function
_ZN6matrix5floadEP8_IO_FILE:
.LFB4155:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rsi, %r8
	movl	$1, %ecx
	movl	$4, %edx
	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
	movq	%rdi, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 64
	movq	%rsi, 8(%rsp)
	orq	$-1, %rsi
	call	__fread_chk@PLT
	movq	8(%rsp), %r8
	movl	$1, %ecx
	movl	$4, %edx
	orq	$-1, %rsi
	leaq	4(%rbx), %rdi
	call	__fread_chk@PLT
	movslq	(%rbx), %r12
	movslq	4(%rbx), %rax
	imulq	%rax, %r12
	leaq	0(,%r12,8), %r13
	movq	%r13, %rdi
	call	malloc@PLT
	movq	8(%rsp), %r8
	movq	%r12, %rcx
	movq	%r13, %rsi
	movq	%rax, %rdi
	movl	$8, %edx
	movq	%rax, %rbp
	call	__fread_chk@PLT
	movq	8(%rbx), %rdi
	testq	%rdi, %rdi
	je	.L42
	call	cudaFree@PLT
.L42:
	movslq	4(%rbx), %rax
	movslq	(%rbx), %rsi
	leaq	8(%rbx), %rdi
	imulq	%rax, %rsi
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movslq	(%rbx), %rdx
	movslq	4(%rbx), %rax
	movq	%rbp, %rsi
	movq	8(%rbx), %rdi
	movl	$1, %ecx
	imulq	%rax, %rdx
	salq	$3, %rdx
	call	cudaMemcpy@PLT
	addq	$24, %rsp
	.cfi_def_cfa_offset 40
	movq	%rbp, %rdi
	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
	jmp	free@PLT
	.cfi_endproc
.LFE4155:
	.size	_ZN6matrix5floadEP8_IO_FILE, .-_ZN6matrix5floadEP8_IO_FILE
	.align 2
	.globl	_ZN6matrixD2Ev
	.type	_ZN6matrixD2Ev, @function
_ZN6matrixD2Ev:
.LFB4157:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4157
	endbr64
	movq	8(%rdi), %rdi
	testq	%rdi, %rdi
	je	.L53
	pushq	%rax
	.cfi_def_cfa_offset 16
	call	cudaFree@PLT
	popq	%rdx
	.cfi_def_cfa_offset 8
	ret
.L53:
	ret
	.cfi_endproc
.LFE4157:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table,"a",@progbits
.LLSDA4157:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4157-.LLSDACSB4157
.LLSDACSB4157:
.LLSDACSE4157:
	.text
	.size	_ZN6matrixD2Ev, .-_ZN6matrixD2Ev
	.globl	_ZN6matrixD1Ev
	.set	_ZN6matrixD1Ev,_ZN6matrixD2Ev
	.align 2
	.globl	_ZN6matrix3rowEi
	.type	_ZN6matrix3rowEi, @function
_ZN6matrix3rowEi:
.LFB4123:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4123
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movl	%edx, %ebx
	movl	4(%rsi), %edx
	movl	$1, %esi
	decl	%ebx
.LEHB0:
	call	_ZN6matrixC1Eii
.LEHE0:
	movslq	4(%r12), %rdx
	movq	8(%rbp), %rdi
	movl	$3, %ecx
	movq	%rdx, %rax
	salq	$3, %rdx
	imull	%eax, %ebx
	movq	8(%r12), %rax
	movslq	%ebx, %rbx
	leaq	(%rax,%rbx,8), %rsi
.LEHB1:
	call	cudaMemcpy@PLT
.LEHE1:
	movq	%rbp, %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
.L58:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbx
.L57:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB2:
	call	_Unwind_Resume@PLT
.LEHE2:
	.cfi_endproc
.LFE4123:
	.section	.gcc_except_table
.LLSDA4123:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4123-.LLSDACSB4123
.LLSDACSB4123:
	.uleb128 .LEHB0-.LFB4123
	.uleb128 .LEHE0-.LEHB0
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB1-.LFB4123
	.uleb128 .LEHE1-.LEHB1
	.uleb128 .L58-.LFB4123
	.uleb128 0
	.uleb128 .LEHB2-.LFB4123
	.uleb128 .LEHE2-.LEHB2
	.uleb128 0
	.uleb128 0
.LLSDACSE4123:
	.text
	.size	_ZN6matrix3rowEi, .-_ZN6matrix3rowEi
	.align 2
	.globl	_ZN6matrix3rowEii
	.type	_ZN6matrix3rowEii, @function
_ZN6matrix3rowEii:
.LFB4124:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4124
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	subl	%edx, %ecx
	movq	%rsi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leal	1(%rcx), %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movl	%edx, %ebx
	pushq	%r8
	.cfi_def_cfa_offset 48
	movl	4(%rsi), %edx
	movl	%ebp, %esi
.LEHB3:
	call	_ZN6matrixC1Eii
.LEHE3:
	movl	4(%r13), %eax
	movabsq	$1152921504606846975, %rcx
	movl	%eax, %edx
	imull	%ebp, %edx
	movslq	%edx, %rdx
	cmpq	%rdx, %rcx
	jnb	.L62
.LEHB4:
	call	__cxa_throw_bad_array_new_length@PLT
.L62:
	decl	%ebx
	movslq	%eax, %rdx
	movslq	%ebp, %rbp
	movq	8(%r12), %rdi
	imull	%eax, %ebx
	movq	8(%r13), %rax
	movl	$3, %ecx
	imulq	%rbp, %rdx
	movslq	%ebx, %rbx
	salq	$3, %rdx
	leaq	(%rax,%rbx,8), %rsi
	call	cudaMemcpy@PLT
.LEHE4:
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movq	%r12, %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
.L64:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbx
.L63:
	movq	%r12, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB5:
	call	_Unwind_Resume@PLT
.LEHE5:
	.cfi_endproc
.LFE4124:
	.section	.gcc_except_table
.LLSDA4124:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4124-.LLSDACSB4124
.LLSDACSB4124:
	.uleb128 .LEHB3-.LFB4124
	.uleb128 .LEHE3-.LEHB3
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB4-.LFB4124
	.uleb128 .LEHE4-.LEHB4
	.uleb128 .L64-.LFB4124
	.uleb128 0
	.uleb128 .LEHB5-.LFB4124
	.uleb128 .LEHE5-.LEHB5
	.uleb128 0
	.uleb128 0
.LLSDACSE4124:
	.text
	.size	_ZN6matrix3rowEii, .-_ZN6matrix3rowEii
	.globl	_Z4sizeR6matrixi
	.type	_Z4sizeR6matrixi, @function
_Z4sizeR6matrixi:
.LFB4170:
	.cfi_startproc
	endbr64
	movl	4(%rdi), %eax
	decl	%esi
	cmove	(%rdi), %eax
	ret
	.cfi_endproc
.LFE4170:
	.size	_Z4sizeR6matrixi, .-_Z4sizeR6matrixi
	.globl	_Z4sizeR6matrix
	.type	_Z4sizeR6matrix, @function
_Z4sizeR6matrix:
.LFB4171:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4171
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movl	$2, %edx
	movq	%rsi, %rbp
	movl	$1, %esi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
.LEHB6:
	call	_ZN6matrixC1Eii
.LEHE6:
	cvtsi2sdl	0(%rbp), %xmm0
	movq	8(%rbx), %rdi
	leaq	8(%rsp), %rsi
	movl	$1, %ecx
	movl	$16, %edx
	movsd	%xmm0, 8(%rsp)
	cvtsi2sdl	4(%rbp), %xmm0
	movsd	%xmm0, 16(%rsp)
.LEHB7:
	call	cudaMemcpy@PLT
.LEHE7:
	jmp	.L79
.L75:
	endbr64
	movq	%rax, %rbp
.L72:
	movq	%rbx, %rdi
	call	_ZN6matrixD1Ev
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L78
	movq	%rbp, %rdi
.LEHB8:
	call	_Unwind_Resume@PLT
.LEHE8:
.L79:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	je	.L74
.L78:
	call	__stack_chk_fail@PLT
.L74:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4171:
	.section	.gcc_except_table
.LLSDA4171:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4171-.LLSDACSB4171
.LLSDACSB4171:
	.uleb128 .LEHB6-.LFB4171
	.uleb128 .LEHE6-.LEHB6
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB7-.LFB4171
	.uleb128 .LEHE7-.LEHB7
	.uleb128 .L75-.LFB4171
	.uleb128 0
	.uleb128 .LEHB8-.LFB4171
	.uleb128 .LEHE8-.LEHB8
	.uleb128 0
	.uleb128 0
.LLSDACSE4171:
	.text
	.size	_Z4sizeR6matrix, .-_Z4sizeR6matrix
	.globl	_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii
	.type	_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii, @function
_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii:
.LFB4215:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L80
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z16transpose_kernelPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L80:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L82
	call	__stack_chk_fail@PLT
.L82:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4215:
	.size	_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii, .-_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii
	.globl	_Z16transpose_kernelPdS_ii
	.type	_Z16transpose_kernelPdS_ii, @function
_Z16transpose_kernelPdS_ii:
.LFB4216:
	.cfi_startproc
	endbr64
	jmp	_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii
	.cfi_endproc
.LFE4216:
	.size	_Z16transpose_kernelPdS_ii, .-_Z16transpose_kernelPdS_ii
	.align 2
	.globl	_ZN6matrix9transposeEv
	.type	_ZN6matrix9transposeEv, @function
_ZN6matrix9transposeEv:
.LFB4122:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4122
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %esi
	movl	(%rbx), %edx
.LEHB9:
	call	_ZN6matrixC1Eii
.LEHE9:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB10:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L85
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	call	_Z40__device_stub__Z16transpose_kernelPdS_iiPdS_ii
.LEHE10:
	jmp	.L85
.L89:
	endbr64
	movq	%rax, %rbx
.L88:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB11:
	call	_Unwind_Resume@PLT
.LEHE11:
.L85:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4122:
	.section	.gcc_except_table
.LLSDA4122:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4122-.LLSDACSB4122
.LLSDACSB4122:
	.uleb128 .LEHB9-.LFB4122
	.uleb128 .LEHE9-.LEHB9
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB10-.LFB4122
	.uleb128 .LEHE10-.LEHB10
	.uleb128 .L89-.LFB4122
	.uleb128 0
	.uleb128 .LEHB11-.LFB4122
	.uleb128 .LEHE11-.LEHB11
	.uleb128 0
	.uleb128 0
.LLSDACSE4122:
	.text
	.size	_ZN6matrix9transposeEv, .-_ZN6matrix9transposeEv
	.globl	_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii
	.type	_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii, @function
_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii:
.LFB4217:
	.cfi_startproc
	endbr64
	subq	$136, %rsp
	.cfi_def_cfa_offset 144
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movl	%r8d, 4(%rsp)
	movl	%r9d, (%rsp)
	movq	%fs:40, %rax
	movq	%rax, 120(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 104(%rsp)
	movq	%rsp, %rax
	movq	%rax, 112(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L91
	pushq	40(%rsp)
	.cfi_def_cfa_offset 152
	leaq	_Z10get_columnPdS_iiii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 160
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 152
	popq	%rdx
	.cfi_def_cfa_offset 144
.L91:
	movq	120(%rsp), %rax
	subq	%fs:40, %rax
	je	.L93
	call	__stack_chk_fail@PLT
.L93:
	addq	$136, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4217:
	.size	_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii, .-_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii
	.globl	_Z10get_columnPdS_iiii
	.type	_Z10get_columnPdS_iiii, @function
_Z10get_columnPdS_iiii:
.LFB4218:
	.cfi_startproc
	endbr64
	jmp	_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii
	.cfi_endproc
.LFE4218:
	.size	_Z10get_columnPdS_iiii, .-_Z10get_columnPdS_iiii
	.align 2
	.globl	_ZN6matrix6columnEi
	.type	_ZN6matrix6columnEi, @function
_ZN6matrix6columnEi:
.LFB4125:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4125
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	%edx, %r12d
	movl	$1, %edx
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	(%rsi), %esi
.LEHB12:
	call	_ZN6matrixC1Eii
.LEHE12:
	movl	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB13:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L96
	leal	-1(%r12), %r8d
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	movl	%r8d, %r9d
	call	_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii
.LEHE13:
	jmp	.L96
.L100:
	endbr64
	movq	%rax, %rbx
.L99:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB14:
	call	_Unwind_Resume@PLT
.LEHE14:
.L96:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4125:
	.section	.gcc_except_table
.LLSDA4125:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4125-.LLSDACSB4125
.LLSDACSB4125:
	.uleb128 .LEHB12-.LFB4125
	.uleb128 .LEHE12-.LEHB12
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB13-.LFB4125
	.uleb128 .LEHE13-.LEHB13
	.uleb128 .L100-.LFB4125
	.uleb128 0
	.uleb128 .LEHB14-.LFB4125
	.uleb128 .LEHE14-.LEHB14
	.uleb128 0
	.uleb128 0
.LLSDACSE4125:
	.text
	.size	_ZN6matrix6columnEi, .-_ZN6matrix6columnEi
	.align 2
	.globl	_ZN6matrix6columnEii
	.type	_ZN6matrix6columnEii, @function
_ZN6matrix6columnEii:
.LFB4126:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4126
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movl	%ecx, %r14d
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movl	%edx, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdi, %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
	movl	%ecx, %ebx
	subl	%edx, %ebx
	incl	%ebx
	subq	$32, %rsp
	.cfi_def_cfa_offset 80
	movl	(%rsi), %esi
	movl	%ebx, %edx
.LEHB15:
	call	_ZN6matrixC1Eii
.LEHE15:
	imull	0(%rbp), %ebx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$256, %ecx
	leal	255(%rbx), %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB16:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L102
	movl	4(%rbp), %ecx
	movq	8(%r12), %rsi
	leal	-1(%r14), %r9d
	leal	-1(%r13), %r8d
	movq	8(%rbp), %rdi
	movl	0(%rbp), %edx
	call	_Z36__device_stub__Z10get_columnPdS_iiiiPdS_iiii
.LEHE16:
	jmp	.L102
.L106:
	endbr64
	movq	%rax, %rbx
.L105:
	movq	%r12, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB17:
	call	_Unwind_Resume@PLT
.LEHE17:
.L102:
	addq	$32, %rsp
	.cfi_def_cfa_offset 48
	movq	%r12, %rax
	popq	%rbx
	.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
	.cfi_endproc
.LFE4126:
	.section	.gcc_except_table
.LLSDA4126:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4126-.LLSDACSB4126
.LLSDACSB4126:
	.uleb128 .LEHB15-.LFB4126
	.uleb128 .LEHE15-.LEHB15
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB16-.LFB4126
	.uleb128 .LEHE16-.LEHB16
	.uleb128 .L106-.LFB4126
	.uleb128 0
	.uleb128 .LEHB17-.LFB4126
	.uleb128 .LEHE17-.LEHB17
	.uleb128 0
	.uleb128 0
.LLSDACSE4126:
	.text
	.size	_ZN6matrix6columnEii, .-_ZN6matrix6columnEii
	.globl	_Z27__device_stub__Z3addPdS_S_iPdS_S_i
	.type	_Z27__device_stub__Z3addPdS_S_iPdS_S_i, @function
_Z27__device_stub__Z3addPdS_S_iPdS_S_i:
.LFB4219:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L108
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3addPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L108:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L110
	call	__stack_chk_fail@PLT
.L110:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4219:
	.size	_Z27__device_stub__Z3addPdS_S_iPdS_S_i, .-_Z27__device_stub__Z3addPdS_S_iPdS_S_i
	.globl	_Z3addPdS_S_i
	.type	_Z3addPdS_S_i, @function
_Z3addPdS_S_i:
.LFB4220:
	.cfi_startproc
	endbr64
	jmp	_Z27__device_stub__Z3addPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4220:
	.size	_Z3addPdS_S_i, .-_Z3addPdS_S_i
	.globl	_Z34__device_stub__Z10add_columnPdS_iiPdS_ii
	.type	_Z34__device_stub__Z10add_columnPdS_iiPdS_ii, @function
_Z34__device_stub__Z10add_columnPdS_iiPdS_ii:
.LFB4221:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L113
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z10add_columnPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L113:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L115
	call	__stack_chk_fail@PLT
.L115:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4221:
	.size	_Z34__device_stub__Z10add_columnPdS_iiPdS_ii, .-_Z34__device_stub__Z10add_columnPdS_iiPdS_ii
	.globl	_Z10add_columnPdS_ii
	.type	_Z10add_columnPdS_ii, @function
_Z10add_columnPdS_ii:
.LFB4222:
	.cfi_startproc
	endbr64
	jmp	_Z34__device_stub__Z10add_columnPdS_iiPdS_ii
	.cfi_endproc
.LFE4222:
	.size	_Z10add_columnPdS_ii, .-_Z10add_columnPdS_ii
	.globl	_ZplR6matrixS0_
	.type	_ZplR6matrixS0_, @function
_ZplR6matrixS0_:
.LFB4134:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4134
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	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
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rsi, %rbx
	subq	$56, %rsp
	.cfi_def_cfa_offset 96
	movl	(%rsi), %esi
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	cmpl	$1, 4(%rdx)
	leaq	24(%rsp), %rbp
	jne	.L119
	cmpl	%esi, (%rdx)
	jne	.L119
	movq	%rbx, %rsi
	movq	%rbp, %rdi
.LEHB18:
	call	_ZN6matrixC1ERKS_
.LEHE18:
	movl	(%rbx), %eax
	imull	4(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 20(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 12(%rsp)
	movl	%eax, (%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 4(%rsp)
	movq	(%rsp), %rdi
	movl	8(%rsp), %esi
.LEHB19:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L120
	movl	4(%rbx), %ecx
	movq	8(%r12), %rsi
	movl	(%rbx), %edx
	movq	32(%rsp), %rdi
	call	_Z34__device_stub__Z10add_columnPdS_iiPdS_ii
.L120:
	movq	%rbp, %rsi
	movq	%r13, %rdi
	call	_ZN6matrixC1ERKS_
.LEHE19:
	jmp	.L131
.L119:
	movl	4(%rbx), %edx
	movq	%rbp, %rdi
.LEHB20:
	call	_ZN6matrixC1Eii
.LEHE20:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 20(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 12(%rsp)
	movl	%eax, (%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 4(%rsp)
	movq	(%rsp), %rdi
	movl	8(%rsp), %esi
.LEHB21:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L122
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	movq	32(%rsp), %rdx
	call	_Z27__device_stub__Z3addPdS_S_iPdS_S_i
.L122:
	movq	%rbp, %rsi
	movq	%r13, %rdi
	call	_ZN6matrixC1ERKS_
.LEHE21:
.L131:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L127
	jmp	.L133
.L128:
	endbr64
	jmp	.L134
.L129:
	endbr64
.L134:
	movq	%rax, %rbx
.L125:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L133
	movq	%rbx, %rdi
.LEHB22:
	call	_Unwind_Resume@PLT
.LEHE22:
.L133:
	call	__stack_chk_fail@PLT
.L127:
	addq	$56, %rsp
	.cfi_def_cfa_offset 40
	movq	%r13, %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
.LFE4134:
	.section	.gcc_except_table
.LLSDA4134:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4134-.LLSDACSB4134
.LLSDACSB4134:
	.uleb128 .LEHB18-.LFB4134
	.uleb128 .LEHE18-.LEHB18
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB19-.LFB4134
	.uleb128 .LEHE19-.LEHB19
	.uleb128 .L128-.LFB4134
	.uleb128 0
	.uleb128 .LEHB20-.LFB4134
	.uleb128 .LEHE20-.LEHB20
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB21-.LFB4134
	.uleb128 .LEHE21-.LEHB21
	.uleb128 .L129-.LFB4134
	.uleb128 0
	.uleb128 .LEHB22-.LFB4134
	.uleb128 .LEHE22-.LEHB22
	.uleb128 0
	.uleb128 0
.LLSDACSE4134:
	.text
	.size	_ZplR6matrixS0_, .-_ZplR6matrixS0_
	.globl	_Z26__device_stub__Z3addPddS_iPddS_i
	.type	_Z26__device_stub__Z3addPddS_iPddS_i, @function
_Z26__device_stub__Z3addPddS_iPddS_i:
.LFB4223:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L135
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3addPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L135:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L137
	call	__stack_chk_fail@PLT
.L137:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4223:
	.size	_Z26__device_stub__Z3addPddS_iPddS_i, .-_Z26__device_stub__Z3addPddS_iPddS_i
	.globl	_Z3addPddS_i
	.type	_Z3addPddS_i, @function
_Z3addPddS_i:
.LFB4224:
	.cfi_startproc
	endbr64
	jmp	_Z26__device_stub__Z3addPddS_iPddS_i
	.cfi_endproc
.LFE4224:
	.size	_Z3addPddS_i, .-_Z3addPddS_i
	.globl	_ZplR6matrixd
	.type	_ZplR6matrixd, @function
_ZplR6matrixd:
.LFB4135:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4135
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB23:
	call	_ZN6matrixC1Eii
.LEHE23:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB24:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L140
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z26__device_stub__Z3addPddS_iPddS_i
.LEHE24:
	jmp	.L140
.L144:
	endbr64
	movq	%rax, %rbx
.L143:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB25:
	call	_Unwind_Resume@PLT
.LEHE25:
.L140:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4135:
	.section	.gcc_except_table
.LLSDA4135:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4135-.LLSDACSB4135
.LLSDACSB4135:
	.uleb128 .LEHB23-.LFB4135
	.uleb128 .LEHE23-.LEHB23
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB24-.LFB4135
	.uleb128 .LEHE24-.LEHB24
	.uleb128 .L144-.LFB4135
	.uleb128 0
	.uleb128 .LEHB25-.LFB4135
	.uleb128 .LEHE25-.LEHB25
	.uleb128 0
	.uleb128 0
.LLSDACSE4135:
	.text
	.size	_ZplR6matrixd, .-_ZplR6matrixd
	.globl	_Z27__device_stub__Z3subPdS_S_iPdS_S_i
	.type	_Z27__device_stub__Z3subPdS_S_iPdS_S_i, @function
_Z27__device_stub__Z3subPdS_S_iPdS_S_i:
.LFB4225:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L146
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3subPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L146:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L148
	call	__stack_chk_fail@PLT
.L148:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4225:
	.size	_Z27__device_stub__Z3subPdS_S_iPdS_S_i, .-_Z27__device_stub__Z3subPdS_S_iPdS_S_i
	.globl	_Z3subPdS_S_i
	.type	_Z3subPdS_S_i, @function
_Z3subPdS_S_i:
.LFB4226:
	.cfi_startproc
	endbr64
	jmp	_Z27__device_stub__Z3subPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4226:
	.size	_Z3subPdS_S_i, .-_Z3subPdS_S_i
	.globl	_ZmiR6matrixS0_
	.type	_ZmiR6matrixS0_, @function
_ZmiR6matrixS0_:
.LFB4136:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4136
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB26:
	call	_ZN6matrixC1Eii
.LEHE26:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB27:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L151
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z27__device_stub__Z3subPdS_S_iPdS_S_i
.LEHE27:
	jmp	.L151
.L155:
	endbr64
	movq	%rax, %rbx
.L154:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB28:
	call	_Unwind_Resume@PLT
.LEHE28:
.L151:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4136:
	.section	.gcc_except_table
.LLSDA4136:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4136-.LLSDACSB4136
.LLSDACSB4136:
	.uleb128 .LEHB26-.LFB4136
	.uleb128 .LEHE26-.LEHB26
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB27-.LFB4136
	.uleb128 .LEHE27-.LEHB27
	.uleb128 .L155-.LFB4136
	.uleb128 0
	.uleb128 .LEHB28-.LFB4136
	.uleb128 .LEHE28-.LEHB28
	.uleb128 0
	.uleb128 0
.LLSDACSE4136:
	.text
	.size	_ZmiR6matrixS0_, .-_ZmiR6matrixS0_
	.globl	_Z26__device_stub__Z3subPddS_iPddS_i
	.type	_Z26__device_stub__Z3subPddS_iPddS_i, @function
_Z26__device_stub__Z3subPddS_iPddS_i:
.LFB4227:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L157
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3subPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L157:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L159
	call	__stack_chk_fail@PLT
.L159:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4227:
	.size	_Z26__device_stub__Z3subPddS_iPddS_i, .-_Z26__device_stub__Z3subPddS_iPddS_i
	.globl	_Z3subPddS_i
	.type	_Z3subPddS_i, @function
_Z3subPddS_i:
.LFB4228:
	.cfi_startproc
	endbr64
	jmp	_Z26__device_stub__Z3subPddS_iPddS_i
	.cfi_endproc
.LFE4228:
	.size	_Z3subPddS_i, .-_Z3subPddS_i
	.globl	_ZmiR6matrixd
	.type	_ZmiR6matrixd, @function
_ZmiR6matrixd:
.LFB4137:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4137
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB29:
	call	_ZN6matrixC1Eii
.LEHE29:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB30:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L162
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z26__device_stub__Z3subPddS_iPddS_i
.LEHE30:
	jmp	.L162
.L166:
	endbr64
	movq	%rax, %rbx
.L165:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB31:
	call	_Unwind_Resume@PLT
.LEHE31:
.L162:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4137:
	.section	.gcc_except_table
.LLSDA4137:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4137-.LLSDACSB4137
.LLSDACSB4137:
	.uleb128 .LEHB29-.LFB4137
	.uleb128 .LEHE29-.LEHB29
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB30-.LFB4137
	.uleb128 .LEHE30-.LEHB30
	.uleb128 .L166-.LFB4137
	.uleb128 0
	.uleb128 .LEHB31-.LFB4137
	.uleb128 .LEHE31-.LEHB31
	.uleb128 0
	.uleb128 0
.LLSDACSE4137:
	.text
	.size	_ZmiR6matrixd, .-_ZmiR6matrixd
	.globl	_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii
	.type	_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii, @function
_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii:
.LFB4229:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L168
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z10mul_columnPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L168:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L170
	call	__stack_chk_fail@PLT
.L170:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4229:
	.size	_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii, .-_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii
	.globl	_Z10mul_columnPdS_ii
	.type	_Z10mul_columnPdS_ii, @function
_Z10mul_columnPdS_ii:
.LFB4230:
	.cfi_startproc
	endbr64
	jmp	_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii
	.cfi_endproc
.LFE4230:
	.size	_Z10mul_columnPdS_ii, .-_Z10mul_columnPdS_ii
	.align 2
	.globl	_ZN6matrixmLERS_
	.type	_ZN6matrixmLERS_, @function
_ZN6matrixmLERS_:
.LFB4149:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movl	$256, %ecx
	movq	%rsi, %rbp
	xorl	%r9d, %r9d
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	xorl	%r8d, %r8d
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L173
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii
.L173:
	.cfi_restore_state
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4149:
	.size	_ZN6matrixmLERS_, .-_ZN6matrixmLERS_
	.globl	_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii
	.type	_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii, @function
_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii:
.LFB4231:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 40(%rsp)
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movl	%ecx, 20(%rsp)
	leaq	56(%rsp), %rcx
	movl	%r8d, 16(%rsp)
	movl	%r9d, 12(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 88(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L176
	pushq	56(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z7productPdS_S_iii(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 176
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	104(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L176:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L178
	call	__stack_chk_fail@PLT
.L178:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4231:
	.size	_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii, .-_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii
	.globl	_Z7productPdS_S_iii
	.type	_Z7productPdS_S_iii, @function
_Z7productPdS_S_iii:
.LFB4232:
	.cfi_startproc
	endbr64
	jmp	_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii
	.cfi_endproc
.LFE4232:
	.size	_Z7productPdS_S_iii, .-_Z7productPdS_S_iii
	.globl	_ZmlR6matrixS0_
	.type	_ZmlR6matrixS0_, @function
_ZmlR6matrixS0_:
.LFB4138:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4138
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdi, %r13
	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
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rsi, %rbx
	subq	$56, %rsp
	.cfi_def_cfa_offset 96
	movl	4(%rdx), %edx
	movl	(%rsi), %esi
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rbp
	cmpl	$1, %edx
	jne	.L182
	cmpl	%esi, (%r12)
	jne	.L182
	movq	%rbx, %rsi
	movq	%rbp, %rdi
.LEHB32:
	call	_ZN6matrixC1ERKS_
.LEHE32:
	movl	(%rbx), %eax
	imull	4(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 20(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 12(%rsp)
	movl	%eax, (%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 4(%rsp)
	movq	(%rsp), %rdi
	movl	8(%rsp), %esi
.LEHB33:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L183
	movl	4(%rbx), %ecx
	movq	8(%r12), %rsi
	movl	(%rbx), %edx
	movq	32(%rsp), %rdi
	call	_Z34__device_stub__Z10mul_columnPdS_iiPdS_ii
.L183:
	movq	%rbp, %rsi
	movq	%r13, %rdi
	call	_ZN6matrixC1ERKS_
.LEHE33:
	jmp	.L194
.L182:
	movq	%rbp, %rdi
.LEHB34:
	call	_ZN6matrixC1Eii
.LEHE34:
	movl	(%rbx), %eax
	imull	4(%r12), %eax
	xorl	%r9d, %r9d
	movl	$256, %ecx
	xorl	%r8d, %r8d
	movl	$1, 20(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 12(%rsp)
	movl	%eax, (%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 4(%rsp)
	movq	(%rsp), %rdi
	movl	8(%rsp), %esi
.LEHB35:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L185
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	movl	4(%r12), %r9d
	movl	4(%rbx), %r8d
	movl	(%rbx), %ecx
	movq	32(%rsp), %rdx
	call	_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii
.L185:
	movq	%rbp, %rsi
	movq	%r13, %rdi
	call	_ZN6matrixC1ERKS_
.LEHE35:
.L194:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L190
	jmp	.L196
.L191:
	endbr64
	jmp	.L197
.L192:
	endbr64
.L197:
	movq	%rax, %rbx
.L188:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L196
	movq	%rbx, %rdi
.LEHB36:
	call	_Unwind_Resume@PLT
.LEHE36:
.L196:
	call	__stack_chk_fail@PLT
.L190:
	addq	$56, %rsp
	.cfi_def_cfa_offset 40
	movq	%r13, %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
.LFE4138:
	.section	.gcc_except_table
.LLSDA4138:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4138-.LLSDACSB4138
.LLSDACSB4138:
	.uleb128 .LEHB32-.LFB4138
	.uleb128 .LEHE32-.LEHB32
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB33-.LFB4138
	.uleb128 .LEHE33-.LEHB33
	.uleb128 .L191-.LFB4138
	.uleb128 0
	.uleb128 .LEHB34-.LFB4138
	.uleb128 .LEHE34-.LEHB34
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB35-.LFB4138
	.uleb128 .LEHE35-.LEHB35
	.uleb128 .L192-.LFB4138
	.uleb128 0
	.uleb128 .LEHB36-.LFB4138
	.uleb128 .LEHE36-.LEHB36
	.uleb128 0
	.uleb128 0
.LLSDACSE4138:
	.text
	.size	_ZmlR6matrixS0_, .-_ZmlR6matrixS0_
	.globl	_Z3mulR6matrixS0_S0_
	.type	_Z3mulR6matrixS0_S0_, @function
_Z3mulR6matrixS0_S0_:
.LFB4159:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movq	8(%rdx), %rdi
	testq	%rdi, %rdi
	je	.L199
	call	cudaFree@PLT
.L199:
	movslq	0(%rbp), %rsi
	movslq	4(%rbx), %rax
	leaq	8(%r12), %rdi
	movl	%esi, (%r12)
	imulq	%rax, %rsi
	movl	%eax, 4(%r12)
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movl	0(%rbp), %eax
	imull	4(%rbx), %eax
	xorl	%r9d, %r9d
	movl	$256, %ecx
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L198
	movq	8(%r12), %rdx
	movq	8(%rbx), %rsi
	movq	8(%rbp), %rdi
	movl	4(%rbx), %r9d
	movl	4(%rbp), %r8d
	movl	0(%rbp), %ecx
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	jmp	_Z33__device_stub__Z7productPdS_S_iiiPdS_S_iii
.L198:
	.cfi_restore_state
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4159:
	.size	_Z3mulR6matrixS0_S0_, .-_Z3mulR6matrixS0_S0_
	.globl	_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii
	.type	_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii, @function
_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii:
.LFB4233:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 40(%rsp)
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movl	%ecx, 20(%rsp)
	leaq	56(%rsp), %rcx
	movl	%r8d, 16(%rsp)
	movl	%r9d, 12(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 88(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L205
	pushq	56(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z25transposed_product_secondPdS_S_iii(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 176
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	104(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L205:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L207
	call	__stack_chk_fail@PLT
.L207:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4233:
	.size	_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii, .-_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii
	.globl	_Z25transposed_product_secondPdS_S_iii
	.type	_Z25transposed_product_secondPdS_S_iii, @function
_Z25transposed_product_secondPdS_S_iii:
.LFB4234:
	.cfi_startproc
	endbr64
	jmp	_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii
	.cfi_endproc
.LFE4234:
	.size	_Z25transposed_product_secondPdS_S_iii, .-_Z25transposed_product_secondPdS_S_iii
	.globl	_Z14transposed_mulR6matrixS0_
	.type	_Z14transposed_mulR6matrixS0_, @function
_Z14transposed_mulR6matrixS0_:
.LFB4139:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4139
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	(%rdx), %edx
	movl	(%rsi), %esi
.LEHB37:
	call	_ZN6matrixC1Eii
.LEHE37:
	movl	(%rbx), %eax
	imull	(%r12), %eax
	xorl	%r9d, %r9d
	movl	$256, %ecx
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB38:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L210
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	movl	(%r12), %r9d
	movl	4(%rbx), %r8d
	movl	(%rbx), %ecx
	call	_Z52__device_stub__Z25transposed_product_secondPdS_S_iiiPdS_S_iii
.LEHE38:
	jmp	.L210
.L214:
	endbr64
	movq	%rax, %rbx
.L213:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB39:
	call	_Unwind_Resume@PLT
.LEHE39:
.L210:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4139:
	.section	.gcc_except_table
.LLSDA4139:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4139-.LLSDACSB4139
.LLSDACSB4139:
	.uleb128 .LEHB37-.LFB4139
	.uleb128 .LEHE37-.LEHB37
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB38-.LFB4139
	.uleb128 .LEHE38-.LEHB38
	.uleb128 .L214-.LFB4139
	.uleb128 0
	.uleb128 .LEHB39-.LFB4139
	.uleb128 .LEHE39-.LEHB39
	.uleb128 0
	.uleb128 0
.LLSDACSE4139:
	.text
	.size	_Z14transposed_mulR6matrixS0_, .-_Z14transposed_mulR6matrixS0_
	.globl	_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii
	.type	_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii, @function
_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii:
.LFB4235:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 40(%rsp)
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movl	%ecx, 20(%rsp)
	leaq	56(%rsp), %rcx
	movl	%r8d, 16(%rsp)
	movl	%r9d, 12(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 88(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L216
	pushq	56(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z24transposed_product_firstPdS_S_iii(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 176
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	104(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L216:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L218
	call	__stack_chk_fail@PLT
.L218:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4235:
	.size	_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii, .-_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii
	.globl	_Z24transposed_product_firstPdS_S_iii
	.type	_Z24transposed_product_firstPdS_S_iii, @function
_Z24transposed_product_firstPdS_S_iii:
.LFB4236:
	.cfi_startproc
	endbr64
	jmp	_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii
	.cfi_endproc
.LFE4236:
	.size	_Z24transposed_product_firstPdS_S_iii, .-_Z24transposed_product_firstPdS_S_iii
	.globl	_Z14transposed_mulR6matrixS0_S0_
	.type	_Z14transposed_mulR6matrixS0_S0_, @function
_Z14transposed_mulR6matrixS0_S0_:
.LFB4140:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	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
	movq	%rdi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movq	8(%rdx), %rdi
	testq	%rdi, %rdi
	je	.L222
	call	cudaFree@PLT
.L222:
	movl	4(%rbx), %eax
	leaq	8(%r12), %rdi
	movl	%eax, (%r12)
	movslq	4(%rbp), %rax
	movl	%eax, 4(%r12)
	movslq	4(%rbx), %rsi
	imulq	%rax, %rsi
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movl	4(%rbx), %eax
	imull	4(%rbp), %eax
	xorl	%r9d, %r9d
	movl	$256, %ecx
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L221
	movl	4(%rbx), %ecx
	movq	8(%r12), %rdx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	4(%rbp), %r9d
	movl	(%rbx), %r8d
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	jmp	_Z51__device_stub__Z24transposed_product_firstPdS_S_iiiPdS_S_iii
.L221:
	.cfi_restore_state
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4140:
	.size	_Z14transposed_mulR6matrixS0_S0_, .-_Z14transposed_mulR6matrixS0_S0_
	.globl	_Z31__device_stub__Z8multiplyPddS_iPddS_i
	.type	_Z31__device_stub__Z8multiplyPddS_iPddS_i, @function
_Z31__device_stub__Z8multiplyPddS_iPddS_i:
.LFB4237:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L228
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z8multiplyPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L228:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L230
	call	__stack_chk_fail@PLT
.L230:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4237:
	.size	_Z31__device_stub__Z8multiplyPddS_iPddS_i, .-_Z31__device_stub__Z8multiplyPddS_iPddS_i
	.globl	_Z8multiplyPddS_i
	.type	_Z8multiplyPddS_i, @function
_Z8multiplyPddS_i:
.LFB4238:
	.cfi_startproc
	endbr64
	jmp	_Z31__device_stub__Z8multiplyPddS_iPddS_i
	.cfi_endproc
.LFE4238:
	.size	_Z8multiplyPddS_i, .-_Z8multiplyPddS_i
	.globl	_ZmlR6matrixd
	.type	_ZmlR6matrixd, @function
_ZmlR6matrixd:
.LFB4141:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4141
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB40:
	call	_ZN6matrixC1Eii
.LEHE40:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB41:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L233
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z31__device_stub__Z8multiplyPddS_iPddS_i
.LEHE41:
	jmp	.L233
.L237:
	endbr64
	movq	%rax, %rbx
.L236:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB42:
	call	_Unwind_Resume@PLT
.LEHE42:
.L233:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4141:
	.section	.gcc_except_table
.LLSDA4141:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4141-.LLSDACSB4141
.LLSDACSB4141:
	.uleb128 .LEHB40-.LFB4141
	.uleb128 .LEHE40-.LEHB40
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB41-.LFB4141
	.uleb128 .LEHE41-.LEHB41
	.uleb128 .L237-.LFB4141
	.uleb128 0
	.uleb128 .LEHB42-.LFB4141
	.uleb128 .LEHE42-.LEHB42
	.uleb128 0
	.uleb128 0
.LLSDACSE4141:
	.text
	.size	_ZmlR6matrixd, .-_ZmlR6matrixd
	.globl	_ZmldR6matrix
	.type	_ZmldR6matrix, @function
_ZmldR6matrix:
.LFB4142:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4142
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB43:
	call	_ZN6matrixC1Eii
.LEHE43:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB44:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L239
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z31__device_stub__Z8multiplyPddS_iPddS_i
.LEHE44:
	jmp	.L239
.L243:
	endbr64
	movq	%rax, %rbx
.L242:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB45:
	call	_Unwind_Resume@PLT
.LEHE45:
.L239:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4142:
	.section	.gcc_except_table
.LLSDA4142:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4142-.LLSDACSB4142
.LLSDACSB4142:
	.uleb128 .LEHB43-.LFB4142
	.uleb128 .LEHE43-.LEHB43
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB44-.LFB4142
	.uleb128 .LEHE44-.LEHB44
	.uleb128 .L243-.LFB4142
	.uleb128 0
	.uleb128 .LEHB45-.LFB4142
	.uleb128 .LEHE45-.LEHB45
	.uleb128 0
	.uleb128 0
.LLSDACSE4142:
	.text
	.size	_ZmldR6matrix, .-_ZmldR6matrix
	.globl	_Z3mulR6matrixRdS0_
	.type	_Z3mulR6matrixRdS0_, @function
_Z3mulR6matrixRdS0_:
.LFB4160:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	(%rdi), %eax
	movl	%eax, (%rdx)
	movl	4(%rdi), %eax
	movq	8(%rdx), %rdi
	movl	%eax, 4(%rdx)
	testq	%rdi, %rdi
	je	.L246
	call	free@PLT
.L246:
	movl	0(%rbp), %esi
	imull	4(%rbp), %esi
	leaq	8(%rbp), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L245
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movsd	(%r12), %xmm0
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	jmp	_Z31__device_stub__Z8multiplyPddS_iPddS_i
.L245:
	.cfi_restore_state
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4160:
	.size	_Z3mulR6matrixRdS0_, .-_Z3mulR6matrixRdS0_
	.globl	_Z28__device_stub__Z6dividePdS_iPdS_i
	.type	_Z28__device_stub__Z6dividePdS_iPdS_i, @function
_Z28__device_stub__Z6dividePdS_iPdS_i:
.LFB4239:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	56(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	68(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	40(%rsp), %rdx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L252
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z6dividePdS_i(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L252:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L254
	call	__stack_chk_fail@PLT
.L254:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4239:
	.size	_Z28__device_stub__Z6dividePdS_iPdS_i, .-_Z28__device_stub__Z6dividePdS_iPdS_i
	.globl	_Z6dividePdS_i
	.type	_Z6dividePdS_i, @function
_Z6dividePdS_i:
.LFB4240:
	.cfi_startproc
	endbr64
	jmp	_Z28__device_stub__Z6dividePdS_iPdS_i
	.cfi_endproc
.LFE4240:
	.size	_Z6dividePdS_i, .-_Z6dividePdS_i
	.globl	_Z29__device_stub__Z6dividePddS_iPddS_i
	.type	_Z29__device_stub__Z6dividePddS_iPddS_i, @function
_Z29__device_stub__Z6dividePddS_iPddS_i:
.LFB4241:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L257
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z6dividePddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L257:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L259
	call	__stack_chk_fail@PLT
.L259:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4241:
	.size	_Z29__device_stub__Z6dividePddS_iPddS_i, .-_Z29__device_stub__Z6dividePddS_iPddS_i
	.globl	_Z6dividePddS_i
	.type	_Z6dividePddS_i, @function
_Z6dividePddS_i:
.LFB4242:
	.cfi_startproc
	endbr64
	jmp	_Z29__device_stub__Z6dividePddS_iPddS_i
	.cfi_endproc
.LFE4242:
	.size	_Z6dividePddS_i, .-_Z6dividePddS_i
	.globl	_ZdvR6matrixd
	.type	_ZdvR6matrixd, @function
_ZdvR6matrixd:
.LFB4144:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4144
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB46:
	call	_ZN6matrixC1Eii
.LEHE46:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB47:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L262
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z29__device_stub__Z6dividePddS_iPddS_i
.LEHE47:
	jmp	.L262
.L266:
	endbr64
	movq	%rax, %rbx
.L265:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB48:
	call	_Unwind_Resume@PLT
.LEHE48:
.L262:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4144:
	.section	.gcc_except_table
.LLSDA4144:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4144-.LLSDACSB4144
.LLSDACSB4144:
	.uleb128 .LEHB46-.LFB4144
	.uleb128 .LEHE46-.LEHB46
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB47-.LFB4144
	.uleb128 .LEHE47-.LEHB47
	.uleb128 .L266-.LFB4144
	.uleb128 0
	.uleb128 .LEHB48-.LFB4144
	.uleb128 .LEHE48-.LEHB48
	.uleb128 0
	.uleb128 0
.LLSDACSE4144:
	.text
	.size	_ZdvR6matrixd, .-_ZdvR6matrixd
	.globl	_Z27__device_stub__Z6dividePddiPddi
	.type	_Z27__device_stub__Z6dividePddiPddi, @function
_Z27__device_stub__Z6dividePddiPddi:
.LFB4243:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	40(%rsp), %rdx
	movl	%esi, 12(%rsp)
	leaq	56(%rsp), %rdi
	leaq	68(%rsp), %rsi
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L268
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z6dividePddi(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L268:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L270
	call	__stack_chk_fail@PLT
.L270:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4243:
	.size	_Z27__device_stub__Z6dividePddiPddi, .-_Z27__device_stub__Z6dividePddiPddi
	.globl	_Z6dividePddi
	.type	_Z6dividePddi, @function
_Z6dividePddi:
.LFB4244:
	.cfi_startproc
	endbr64
	jmp	_Z27__device_stub__Z6dividePddiPddi
	.cfi_endproc
.LFE4244:
	.size	_Z6dividePddi, .-_Z6dividePddi
	.align 2
	.globl	_ZN6matrixdVEd
	.type	_ZN6matrixdVEd, @function
_ZN6matrixdVEd:
.LFB4143:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$256, %ecx
	movq	%rdi, %rbx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	movsd	%xmm0, 8(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 24(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 28(%rsp)
	movq	24(%rsp), %rdi
	movl	32(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	movsd	8(%rsp), %xmm0
	testl	%eax, %eax
	jne	.L273
	movl	(%rbx), %esi
	imull	4(%rbx), %esi
	movq	8(%rbx), %rdi
	addq	$48, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_Z27__device_stub__Z6dividePddiPddi
.L273:
	.cfi_restore_state
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4143:
	.size	_ZN6matrixdVEd, .-_ZN6matrixdVEd
	.globl	_Z25__device_stub__Z3addPdS_iPdS_i
	.type	_Z25__device_stub__Z3addPdS_iPdS_i, @function
_Z25__device_stub__Z3addPdS_iPdS_i:
.LFB4245:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	56(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	68(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	40(%rsp), %rdx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L276
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3addPdS_i(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L276:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L278
	call	__stack_chk_fail@PLT
.L278:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4245:
	.size	_Z25__device_stub__Z3addPdS_iPdS_i, .-_Z25__device_stub__Z3addPdS_iPdS_i
	.globl	_Z3addPdS_i
	.type	_Z3addPdS_i, @function
_Z3addPdS_i:
.LFB4246:
	.cfi_startproc
	endbr64
	jmp	_Z25__device_stub__Z3addPdS_iPdS_i
	.cfi_endproc
.LFE4246:
	.size	_Z3addPdS_i, .-_Z3addPdS_i
	.align 2
	.globl	_ZN6matrixpLERS_
	.type	_ZN6matrixpLERS_, @function
_ZN6matrixpLERS_:
.LFB4145:
	.cfi_startproc
	endbr64
	movabsq	$4294967552, %rcx
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %eax
	movl	(%rsi), %edx
	movq	%rcx, 20(%rsp)
	cmpl	$1, %eax
	movl	$1, 28(%rsp)
	jne	.L282
	leal	255(%rdx), %eax
	movl	$256, %esi
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	cltd
	idivl	%esi
	movq	%rcx, %rdx
	movl	$1, %ecx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L281
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z34__device_stub__Z10add_columnPdS_iiPdS_ii
.L282:
	.cfi_restore_state
	imull	%edx, %eax
	movl	$256, %esi
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%esi
	movq	%rcx, %rdx
	movl	$1, %ecx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L281
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z25__device_stub__Z3addPdS_iPdS_i
.L281:
	.cfi_restore_state
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4145:
	.size	_ZN6matrixpLERS_, .-_ZN6matrixpLERS_
	.globl	_Z24__device_stub__Z3addPddiPddi
	.type	_Z24__device_stub__Z3addPddiPddi, @function
_Z24__device_stub__Z3addPddiPddi:
.LFB4247:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	40(%rsp), %rdx
	movl	%esi, 12(%rsp)
	leaq	56(%rsp), %rdi
	leaq	68(%rsp), %rsi
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L287
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3addPddi(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L287:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L289
	call	__stack_chk_fail@PLT
.L289:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4247:
	.size	_Z24__device_stub__Z3addPddiPddi, .-_Z24__device_stub__Z3addPddiPddi
	.globl	_Z3addPddi
	.type	_Z3addPddi, @function
_Z3addPddi:
.LFB4248:
	.cfi_startproc
	endbr64
	jmp	_Z24__device_stub__Z3addPddiPddi
	.cfi_endproc
.LFE4248:
	.size	_Z3addPddi, .-_Z3addPddi
	.align 2
	.globl	_ZN6matrixpLEd
	.type	_ZN6matrixpLEd, @function
_ZN6matrixpLEd:
.LFB4146:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$256, %ecx
	movq	%rdi, %rbx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	movsd	%xmm0, 8(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 24(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 28(%rsp)
	movq	24(%rsp), %rdi
	movl	32(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	movsd	8(%rsp), %xmm0
	testl	%eax, %eax
	jne	.L292
	movl	(%rbx), %esi
	imull	4(%rbx), %esi
	movq	8(%rbx), %rdi
	addq	$48, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_Z24__device_stub__Z3addPddiPddi
.L292:
	.cfi_restore_state
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4146:
	.size	_ZN6matrixpLEd, .-_ZN6matrixpLEd
	.align 2
	.globl	_ZN6matrixmIEd
	.type	_ZN6matrixmIEd, @function
_ZN6matrixmIEd:
.LFB4148:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$256, %ecx
	movq	%rdi, %rbx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	movsd	%xmm0, 8(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 24(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 28(%rsp)
	movq	24(%rsp), %rdi
	movl	32(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	movsd	8(%rsp), %xmm0
	testl	%eax, %eax
	jne	.L295
	movl	(%rbx), %esi
	imull	4(%rbx), %esi
	movq	8(%rbx), %rdi
	xorps	.LC1(%rip), %xmm0
	addq	$48, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_Z24__device_stub__Z3addPddiPddi
.L295:
	.cfi_restore_state
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4148:
	.size	_ZN6matrixmIEd, .-_ZN6matrixmIEd
	.globl	_Z25__device_stub__Z3subPdS_iPdS_i
	.type	_Z25__device_stub__Z3subPdS_iPdS_i, @function
_Z25__device_stub__Z3subPdS_iPdS_i:
.LFB4249:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	56(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	68(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	40(%rsp), %rdx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L298
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3subPdS_i(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L298:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L300
	call	__stack_chk_fail@PLT
.L300:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4249:
	.size	_Z25__device_stub__Z3subPdS_iPdS_i, .-_Z25__device_stub__Z3subPdS_iPdS_i
	.globl	_Z3subPdS_i
	.type	_Z3subPdS_i, @function
_Z3subPdS_i:
.LFB4250:
	.cfi_startproc
	endbr64
	jmp	_Z25__device_stub__Z3subPdS_iPdS_i
	.cfi_endproc
.LFE4250:
	.size	_Z3subPdS_i, .-_Z3subPdS_i
	.globl	_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii
	.type	_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii, @function
_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii:
.LFB4251:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L303
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z10sub_columnPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L303:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L305
	call	__stack_chk_fail@PLT
.L305:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4251:
	.size	_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii, .-_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii
	.globl	_Z10sub_columnPdS_ii
	.type	_Z10sub_columnPdS_ii, @function
_Z10sub_columnPdS_ii:
.LFB4252:
	.cfi_startproc
	endbr64
	jmp	_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii
	.cfi_endproc
.LFE4252:
	.size	_Z10sub_columnPdS_ii, .-_Z10sub_columnPdS_ii
	.align 2
	.globl	_ZN6matrixmIERS_
	.type	_ZN6matrixmIERS_, @function
_ZN6matrixmIERS_:
.LFB4147:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %eax
	cmpl	$1, %eax
	jne	.L309
	movl	(%rdi), %eax
	imull	4(%rdi), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 28(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 20(%rsp)
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L308
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z34__device_stub__Z10sub_columnPdS_iiPdS_ii
.L309:
	.cfi_restore_state
	imull	(%rsi), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 28(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 20(%rsp)
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L308
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z25__device_stub__Z3subPdS_iPdS_i
.L308:
	.cfi_restore_state
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4147:
	.size	_ZN6matrixmIERS_, .-_ZN6matrixmIERS_
	.globl	_Z29__device_stub__Z8multiplyPddiPddi
	.type	_Z29__device_stub__Z8multiplyPddiPddi, @function
_Z29__device_stub__Z8multiplyPddiPddi:
.LFB4253:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	40(%rsp), %rdx
	movl	%esi, 12(%rsp)
	leaq	56(%rsp), %rdi
	leaq	68(%rsp), %rsi
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L314
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z8multiplyPddi(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L314:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L316
	call	__stack_chk_fail@PLT
.L316:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4253:
	.size	_Z29__device_stub__Z8multiplyPddiPddi, .-_Z29__device_stub__Z8multiplyPddiPddi
	.globl	_Z8multiplyPddi
	.type	_Z8multiplyPddi, @function
_Z8multiplyPddi:
.LFB4254:
	.cfi_startproc
	endbr64
	jmp	_Z29__device_stub__Z8multiplyPddiPddi
	.cfi_endproc
.LFE4254:
	.size	_Z8multiplyPddi, .-_Z8multiplyPddi
	.align 2
	.globl	_ZN6matrixmLEd
	.type	_ZN6matrixmLEd, @function
_ZN6matrixmLEd:
.LFB4150:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$256, %ecx
	movq	%rdi, %rbx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	movsd	%xmm0, 8(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 24(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 28(%rsp)
	movq	24(%rsp), %rdi
	movl	32(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	movsd	8(%rsp), %xmm0
	testl	%eax, %eax
	jne	.L319
	movl	(%rbx), %esi
	imull	4(%rbx), %esi
	movq	8(%rbx), %rdi
	addq	$48, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_Z29__device_stub__Z8multiplyPddiPddi
.L319:
	.cfi_restore_state
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4150:
	.size	_ZN6matrixmLEd, .-_ZN6matrixmLEd
	.globl	_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii
	.type	_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii, @function
_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii:
.LFB4255:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L322
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z13divide_columnPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L322:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L324
	call	__stack_chk_fail@PLT
.L324:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4255:
	.size	_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii, .-_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii
	.globl	_Z13divide_columnPdS_ii
	.type	_Z13divide_columnPdS_ii, @function
_Z13divide_columnPdS_ii:
.LFB4256:
	.cfi_startproc
	endbr64
	jmp	_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii
	.cfi_endproc
.LFE4256:
	.size	_Z13divide_columnPdS_ii, .-_Z13divide_columnPdS_ii
	.align 2
	.globl	_ZN6matrixdVERS_
	.type	_ZN6matrixdVERS_, @function
_ZN6matrixdVERS_:
.LFB4151:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	cmpl	$1, 4(%rsi)
	jne	.L328
	movl	(%rdi), %eax
	imull	4(%rdi), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 28(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 20(%rsp)
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L327
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z37__device_stub__Z13divide_columnPdS_iiPdS_ii
.L328:
	.cfi_restore_state
	movq	(%rdi), %rax
	cmpq	%rax, (%rsi)
	jne	.L327
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 28(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 20(%rsp)
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L327
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z28__device_stub__Z6dividePdS_iPdS_i
.L327:
	.cfi_restore_state
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4151:
	.size	_ZN6matrixdVERS_, .-_ZN6matrixdVERS_
	.globl	_Z28__device_stub__Z7cut_offPddiPddi
	.type	_Z28__device_stub__Z7cut_offPddiPddi, @function
_Z28__device_stub__Z7cut_offPddiPddi:
.LFB4257:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	40(%rsp), %rdx
	movl	%esi, 12(%rsp)
	leaq	56(%rsp), %rdi
	leaq	68(%rsp), %rsi
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L333
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z7cut_offPddi(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L333:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L335
	call	__stack_chk_fail@PLT
.L335:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4257:
	.size	_Z28__device_stub__Z7cut_offPddiPddi, .-_Z28__device_stub__Z7cut_offPddiPddi
	.globl	_Z7cut_offPddi
	.type	_Z7cut_offPddi, @function
_Z7cut_offPddi:
.LFB4258:
	.cfi_startproc
	endbr64
	jmp	_Z28__device_stub__Z7cut_offPddiPddi
	.cfi_endproc
.LFE4258:
	.size	_Z7cut_offPddi, .-_Z7cut_offPddi
	.align 2
	.globl	_ZN6matrix4maskEd
	.type	_ZN6matrix4maskEd, @function
_ZN6matrix4maskEd:
.LFB4152:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$256, %ecx
	movq	%rdi, %rbx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	movsd	%xmm0, 8(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 24(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 28(%rsp)
	movq	24(%rsp), %rdi
	movl	32(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	movsd	8(%rsp), %xmm0
	testl	%eax, %eax
	jne	.L338
	movl	(%rbx), %esi
	imull	4(%rbx), %esi
	movq	8(%rbx), %rdi
	addq	$48, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_Z28__device_stub__Z7cut_offPddiPddi
.L338:
	.cfi_restore_state
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4152:
	.size	_ZN6matrix4maskEd, .-_ZN6matrix4maskEd
	.globl	_Z36__device_stub__Z12greater_thanPddS_iPddS_i
	.type	_Z36__device_stub__Z12greater_thanPddS_iPddS_i, @function
_Z36__device_stub__Z12greater_thanPddS_iPddS_i:
.LFB4259:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L341
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z12greater_thanPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L341:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L343
	call	__stack_chk_fail@PLT
.L343:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4259:
	.size	_Z36__device_stub__Z12greater_thanPddS_iPddS_i, .-_Z36__device_stub__Z12greater_thanPddS_iPddS_i
	.globl	_Z12greater_thanPddS_i
	.type	_Z12greater_thanPddS_i, @function
_Z12greater_thanPddS_i:
.LFB4260:
	.cfi_startproc
	endbr64
	jmp	_Z36__device_stub__Z12greater_thanPddS_iPddS_i
	.cfi_endproc
.LFE4260:
	.size	_Z12greater_thanPddS_i, .-_Z12greater_thanPddS_i
	.globl	_ZgtR6matrixd
	.type	_ZgtR6matrixd, @function
_ZgtR6matrixd:
.LFB4161:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4161
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB49:
	call	_ZN6matrixC1Eii
.LEHE49:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB50:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L346
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z36__device_stub__Z12greater_thanPddS_iPddS_i
.LEHE50:
	jmp	.L346
.L350:
	endbr64
	movq	%rax, %rbx
.L349:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB51:
	call	_Unwind_Resume@PLT
.LEHE51:
.L346:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4161:
	.section	.gcc_except_table
.LLSDA4161:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4161-.LLSDACSB4161
.LLSDACSB4161:
	.uleb128 .LEHB49-.LFB4161
	.uleb128 .LEHE49-.LEHB49
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB50-.LFB4161
	.uleb128 .LEHE50-.LEHB50
	.uleb128 .L350-.LFB4161
	.uleb128 0
	.uleb128 .LEHB51-.LFB4161
	.uleb128 .LEHE51-.LEHB51
	.uleb128 0
	.uleb128 0
.LLSDACSE4161:
	.text
	.size	_ZgtR6matrixd, .-_ZgtR6matrixd
	.globl	_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i
	.type	_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i, @function
_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i:
.LFB4261:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L352
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z12greater_thanPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L352:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L354
	call	__stack_chk_fail@PLT
.L354:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4261:
	.size	_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i, .-_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i
	.globl	_Z12greater_thanPdS_S_i
	.type	_Z12greater_thanPdS_S_i, @function
_Z12greater_thanPdS_S_i:
.LFB4262:
	.cfi_startproc
	endbr64
	jmp	_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4262:
	.size	_Z12greater_thanPdS_S_i, .-_Z12greater_thanPdS_S_i
	.globl	_ZgtR6matrixS0_
	.type	_ZgtR6matrixS0_, @function
_ZgtR6matrixS0_:
.LFB4162:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4162
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB52:
	call	_ZN6matrixC1Eii
.LEHE52:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB53:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L357
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z37__device_stub__Z12greater_thanPdS_S_iPdS_S_i
.LEHE53:
	jmp	.L357
.L361:
	endbr64
	movq	%rax, %rbx
.L360:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB54:
	call	_Unwind_Resume@PLT
.LEHE54:
.L357:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4162:
	.section	.gcc_except_table
.LLSDA4162:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4162-.LLSDACSB4162
.LLSDACSB4162:
	.uleb128 .LEHB52-.LFB4162
	.uleb128 .LEHE52-.LEHB52
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB53-.LFB4162
	.uleb128 .LEHE53-.LEHB53
	.uleb128 .L361-.LFB4162
	.uleb128 0
	.uleb128 .LEHB54-.LFB4162
	.uleb128 .LEHE54-.LEHB54
	.uleb128 0
	.uleb128 0
.LLSDACSE4162:
	.text
	.size	_ZgtR6matrixS0_, .-_ZgtR6matrixS0_
	.globl	_Z37__device_stub__Z13greater_equalPddS_iPddS_i
	.type	_Z37__device_stub__Z13greater_equalPddS_iPddS_i, @function
_Z37__device_stub__Z13greater_equalPddS_iPddS_i:
.LFB4263:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L363
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z13greater_equalPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L363:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L365
	call	__stack_chk_fail@PLT
.L365:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4263:
	.size	_Z37__device_stub__Z13greater_equalPddS_iPddS_i, .-_Z37__device_stub__Z13greater_equalPddS_iPddS_i
	.globl	_Z13greater_equalPddS_i
	.type	_Z13greater_equalPddS_i, @function
_Z13greater_equalPddS_i:
.LFB4264:
	.cfi_startproc
	endbr64
	jmp	_Z37__device_stub__Z13greater_equalPddS_iPddS_i
	.cfi_endproc
.LFE4264:
	.size	_Z13greater_equalPddS_i, .-_Z13greater_equalPddS_i
	.globl	_ZgeR6matrixd
	.type	_ZgeR6matrixd, @function
_ZgeR6matrixd:
.LFB4163:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4163
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB55:
	call	_ZN6matrixC1Eii
.LEHE55:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB56:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L368
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z37__device_stub__Z13greater_equalPddS_iPddS_i
.LEHE56:
	jmp	.L368
.L372:
	endbr64
	movq	%rax, %rbx
.L371:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB57:
	call	_Unwind_Resume@PLT
.LEHE57:
.L368:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4163:
	.section	.gcc_except_table
.LLSDA4163:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4163-.LLSDACSB4163
.LLSDACSB4163:
	.uleb128 .LEHB55-.LFB4163
	.uleb128 .LEHE55-.LEHB55
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB56-.LFB4163
	.uleb128 .LEHE56-.LEHB56
	.uleb128 .L372-.LFB4163
	.uleb128 0
	.uleb128 .LEHB57-.LFB4163
	.uleb128 .LEHE57-.LEHB57
	.uleb128 0
	.uleb128 0
.LLSDACSE4163:
	.text
	.size	_ZgeR6matrixd, .-_ZgeR6matrixd
	.globl	_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i
	.type	_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i, @function
_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i:
.LFB4265:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L374
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z13greater_equalPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L374:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L376
	call	__stack_chk_fail@PLT
.L376:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4265:
	.size	_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i, .-_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i
	.globl	_Z13greater_equalPdS_S_i
	.type	_Z13greater_equalPdS_S_i, @function
_Z13greater_equalPdS_S_i:
.LFB4266:
	.cfi_startproc
	endbr64
	jmp	_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4266:
	.size	_Z13greater_equalPdS_S_i, .-_Z13greater_equalPdS_S_i
	.globl	_ZgeR6matrixS0_
	.type	_ZgeR6matrixS0_, @function
_ZgeR6matrixS0_:
.LFB4164:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4164
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB58:
	call	_ZN6matrixC1Eii
.LEHE58:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB59:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L379
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z38__device_stub__Z13greater_equalPdS_S_iPdS_S_i
.LEHE59:
	jmp	.L379
.L383:
	endbr64
	movq	%rax, %rbx
.L382:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB60:
	call	_Unwind_Resume@PLT
.LEHE60:
.L379:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4164:
	.section	.gcc_except_table
.LLSDA4164:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4164-.LLSDACSB4164
.LLSDACSB4164:
	.uleb128 .LEHB58-.LFB4164
	.uleb128 .LEHE58-.LEHB58
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB59-.LFB4164
	.uleb128 .LEHE59-.LEHB59
	.uleb128 .L383-.LFB4164
	.uleb128 0
	.uleb128 .LEHB60-.LFB4164
	.uleb128 .LEHE60-.LEHB60
	.uleb128 0
	.uleb128 0
.LLSDACSE4164:
	.text
	.size	_ZgeR6matrixS0_, .-_ZgeR6matrixS0_
	.globl	_Z28__device_stub__Z5equalPddS_iPddS_i
	.type	_Z28__device_stub__Z5equalPddS_iPddS_i, @function
_Z28__device_stub__Z5equalPddS_iPddS_i:
.LFB4267:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L385
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z5equalPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L385:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L387
	call	__stack_chk_fail@PLT
.L387:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4267:
	.size	_Z28__device_stub__Z5equalPddS_iPddS_i, .-_Z28__device_stub__Z5equalPddS_iPddS_i
	.globl	_Z5equalPddS_i
	.type	_Z5equalPddS_i, @function
_Z5equalPddS_i:
.LFB4268:
	.cfi_startproc
	endbr64
	jmp	_Z28__device_stub__Z5equalPddS_iPddS_i
	.cfi_endproc
.LFE4268:
	.size	_Z5equalPddS_i, .-_Z5equalPddS_i
	.globl	_ZeqR6matrixd
	.type	_ZeqR6matrixd, @function
_ZeqR6matrixd:
.LFB4165:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4165
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB61:
	call	_ZN6matrixC1Eii
.LEHE61:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB62:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L390
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z28__device_stub__Z5equalPddS_iPddS_i
.LEHE62:
	jmp	.L390
.L394:
	endbr64
	movq	%rax, %rbx
.L393:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB63:
	call	_Unwind_Resume@PLT
.LEHE63:
.L390:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4165:
	.section	.gcc_except_table
.LLSDA4165:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4165-.LLSDACSB4165
.LLSDACSB4165:
	.uleb128 .LEHB61-.LFB4165
	.uleb128 .LEHE61-.LEHB61
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB62-.LFB4165
	.uleb128 .LEHE62-.LEHB62
	.uleb128 .L394-.LFB4165
	.uleb128 0
	.uleb128 .LEHB63-.LFB4165
	.uleb128 .LEHE63-.LEHB63
	.uleb128 0
	.uleb128 0
.LLSDACSE4165:
	.text
	.size	_ZeqR6matrixd, .-_ZeqR6matrixd
	.globl	_Z29__device_stub__Z5equalPdS_S_iPdS_S_i
	.type	_Z29__device_stub__Z5equalPdS_S_iPdS_S_i, @function
_Z29__device_stub__Z5equalPdS_S_iPdS_S_i:
.LFB4269:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L396
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z5equalPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L396:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L398
	call	__stack_chk_fail@PLT
.L398:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4269:
	.size	_Z29__device_stub__Z5equalPdS_S_iPdS_S_i, .-_Z29__device_stub__Z5equalPdS_S_iPdS_S_i
	.globl	_Z5equalPdS_S_i
	.type	_Z5equalPdS_S_i, @function
_Z5equalPdS_S_i:
.LFB4270:
	.cfi_startproc
	endbr64
	jmp	_Z29__device_stub__Z5equalPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4270:
	.size	_Z5equalPdS_S_i, .-_Z5equalPdS_S_i
	.globl	_ZeqR6matrixS0_
	.type	_ZeqR6matrixS0_, @function
_ZeqR6matrixS0_:
.LFB4166:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4166
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB64:
	call	_ZN6matrixC1Eii
.LEHE64:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB65:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L401
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z29__device_stub__Z5equalPdS_S_iPdS_S_i
.LEHE65:
	jmp	.L401
.L405:
	endbr64
	movq	%rax, %rbx
.L404:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB66:
	call	_Unwind_Resume@PLT
.LEHE66:
.L401:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4166:
	.section	.gcc_except_table
.LLSDA4166:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4166-.LLSDACSB4166
.LLSDACSB4166:
	.uleb128 .LEHB64-.LFB4166
	.uleb128 .LEHE64-.LEHB64
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB65-.LFB4166
	.uleb128 .LEHE65-.LEHB65
	.uleb128 .L405-.LFB4166
	.uleb128 0
	.uleb128 .LEHB66-.LFB4166
	.uleb128 .LEHE66-.LEHB66
	.uleb128 0
	.uleb128 0
.LLSDACSE4166:
	.text
	.size	_ZeqR6matrixS0_, .-_ZeqR6matrixS0_
	.globl	_Z30__device_stub__Z7maximumPddS_iPddS_i
	.type	_Z30__device_stub__Z7maximumPddS_iPddS_i, @function
_Z30__device_stub__Z7maximumPddS_iPddS_i:
.LFB4271:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movq	%rsi, 8(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 4(%rsp)
	leaq	32(%rsp), %rdx
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L407
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z7maximumPddS_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L407:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L409
	call	__stack_chk_fail@PLT
.L409:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4271:
	.size	_Z30__device_stub__Z7maximumPddS_iPddS_i, .-_Z30__device_stub__Z7maximumPddS_iPddS_i
	.globl	_Z7maximumPddS_i
	.type	_Z7maximumPddS_i, @function
_Z7maximumPddS_i:
.LFB4272:
	.cfi_startproc
	endbr64
	jmp	_Z30__device_stub__Z7maximumPddS_iPddS_i
	.cfi_endproc
.LFE4272:
	.size	_Z7maximumPddS_i, .-_Z7maximumPddS_i
	.globl	_Z3maxdR6matrix
	.type	_Z3maxdR6matrix, @function
_Z3maxdR6matrix:
.LFB4167:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4167
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB67:
	call	_ZN6matrixC1Eii
.LEHE67:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB68:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L412
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z30__device_stub__Z7maximumPddS_iPddS_i
.LEHE68:
	jmp	.L412
.L416:
	endbr64
	movq	%rax, %rbx
.L415:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB69:
	call	_Unwind_Resume@PLT
.LEHE69:
.L412:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4167:
	.section	.gcc_except_table
.LLSDA4167:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4167-.LLSDACSB4167
.LLSDACSB4167:
	.uleb128 .LEHB67-.LFB4167
	.uleb128 .LEHE67-.LEHB67
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB68-.LFB4167
	.uleb128 .LEHE68-.LEHB68
	.uleb128 .L416-.LFB4167
	.uleb128 0
	.uleb128 .LEHB69-.LFB4167
	.uleb128 .LEHE69-.LEHB69
	.uleb128 0
	.uleb128 0
.LLSDACSE4167:
	.text
	.size	_Z3maxdR6matrix, .-_Z3maxdR6matrix
	.globl	_Z3maxR6matrixd
	.type	_Z3maxR6matrixd, @function
_Z3maxR6matrixd:
.LFB4168:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4168
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%xmm0, %r14
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB70:
	call	_ZN6matrixC1Eii
.LEHE70:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB71:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L418
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	%r14, %xmm0
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z30__device_stub__Z7maximumPddS_iPddS_i
.LEHE71:
	jmp	.L418
.L422:
	endbr64
	movq	%rax, %rbx
.L421:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB72:
	call	_Unwind_Resume@PLT
.LEHE72:
.L418:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4168:
	.section	.gcc_except_table
.LLSDA4168:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4168-.LLSDACSB4168
.LLSDACSB4168:
	.uleb128 .LEHB70-.LFB4168
	.uleb128 .LEHE70-.LEHB70
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB71-.LFB4168
	.uleb128 .LEHE71-.LEHB71
	.uleb128 .L422-.LFB4168
	.uleb128 0
	.uleb128 .LEHB72-.LFB4168
	.uleb128 .LEHE72-.LEHB72
	.uleb128 0
	.uleb128 0
.LLSDACSE4168:
	.text
	.size	_Z3maxR6matrixd, .-_Z3maxR6matrixd
	.globl	_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i
	.type	_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i, @function
_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i:
.LFB4273:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L424
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z7maximumPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L424:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L426
	call	__stack_chk_fail@PLT
.L426:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4273:
	.size	_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i, .-_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i
	.globl	_Z7maximumPdS_S_i
	.type	_Z7maximumPdS_S_i, @function
_Z7maximumPdS_S_i:
.LFB4274:
	.cfi_startproc
	endbr64
	jmp	_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4274:
	.size	_Z7maximumPdS_S_i, .-_Z7maximumPdS_S_i
	.globl	_Z3maxR6matrixS0_
	.type	_Z3maxR6matrixS0_, @function
_Z3maxR6matrixS0_:
.LFB4169:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4169
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB73:
	call	_ZN6matrixC1Eii
.LEHE73:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB74:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L429
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z31__device_stub__Z7maximumPdS_S_iPdS_S_i
.LEHE74:
	jmp	.L429
.L433:
	endbr64
	movq	%rax, %rbx
.L432:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB75:
	call	_Unwind_Resume@PLT
.LEHE75:
.L429:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4169:
	.section	.gcc_except_table
.LLSDA4169:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4169-.LLSDACSB4169
.LLSDACSB4169:
	.uleb128 .LEHB73-.LFB4169
	.uleb128 .LEHE73-.LEHB73
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB74-.LFB4169
	.uleb128 .LEHE74-.LEHB74
	.uleb128 .L433-.LFB4169
	.uleb128 0
	.uleb128 .LEHB75-.LFB4169
	.uleb128 .LEHE75-.LEHB75
	.uleb128 0
	.uleb128 0
.LLSDACSE4169:
	.text
	.size	_Z3maxR6matrixS0_, .-_Z3maxR6matrixS0_
	.globl	_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii
	.type	_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii, @function
_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii:
.LFB4275:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L435
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z10sum_kernelPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L435:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L437
	call	__stack_chk_fail@PLT
.L437:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4275:
	.size	_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii, .-_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii
	.globl	_Z10sum_kernelPdS_ii
	.type	_Z10sum_kernelPdS_ii, @function
_Z10sum_kernelPdS_ii:
.LFB4276:
	.cfi_startproc
	endbr64
	jmp	_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii
	.cfi_endproc
.LFE4276:
	.size	_Z10sum_kernelPdS_ii, .-_Z10sum_kernelPdS_ii
	.globl	_Z3sumR6matrix
	.type	_Z3sumR6matrix, @function
_Z3sumR6matrix:
.LFB4172:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4172
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movl	$1, %edx
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	(%rsi), %esi
.LEHB76:
	call	_ZN6matrixC1Eii
.LEHE76:
	movl	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB77:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L440
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	call	_Z34__device_stub__Z10sum_kernelPdS_iiPdS_ii
.LEHE77:
	jmp	.L440
.L444:
	endbr64
	movq	%rax, %rbx
.L443:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB78:
	call	_Unwind_Resume@PLT
.LEHE78:
.L440:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4172:
	.section	.gcc_except_table
.LLSDA4172:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4172-.LLSDACSB4172
.LLSDACSB4172:
	.uleb128 .LEHB76-.LFB4172
	.uleb128 .LEHE76-.LEHB76
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB77-.LFB4172
	.uleb128 .LEHE77-.LEHB77
	.uleb128 .L444-.LFB4172
	.uleb128 0
	.uleb128 .LEHB78-.LFB4172
	.uleb128 .LEHE78-.LEHB78
	.uleb128 0
	.uleb128 0
.LLSDACSE4172:
	.text
	.size	_Z3sumR6matrix, .-_Z3sumR6matrix
	.globl	_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii
	.type	_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii, @function
_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii:
.LFB4277:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L446
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z14sum_all_kernelPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L446:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L448
	call	__stack_chk_fail@PLT
.L448:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4277:
	.size	_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii, .-_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii
	.globl	_Z14sum_all_kernelPdS_ii
	.type	_Z14sum_all_kernelPdS_ii, @function
_Z14sum_all_kernelPdS_ii:
.LFB4278:
	.cfi_startproc
	endbr64
	jmp	_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii
	.cfi_endproc
.LFE4278:
	.size	_Z14sum_all_kernelPdS_ii, .-_Z14sum_all_kernelPdS_ii
	.globl	_Z7sum_allR6matrix
	.type	_Z7sum_allR6matrix, @function
_Z7sum_allR6matrix:
.LFB4173:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$8, %esi
	movq	%rdi, %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rdi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, %ecx
	movabsq	$4294967297, %rdi
	movl	$1, %esi
	movl	$1, 32(%rsp)
	movq	%rdi, %rdx
	movq	%rdi, 24(%rsp)
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L452
	movl	4(%rbx), %ecx
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	movq	(%rsp), %rsi
	call	_Z38__device_stub__Z14sum_all_kernelPdS_iiPdS_ii
.L452:
	movq	(%rsp), %rsi
	leaq	24(%rsp), %rdi
	movl	$2, %ecx
	movl	$8, %edx
	call	cudaMemcpy@PLT
	movq	(%rsp), %rdi
	call	cudaFree@PLT
	movsd	24(%rsp), %xmm0
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L453
	call	__stack_chk_fail@PLT
.L453:
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4173:
	.size	_Z7sum_allR6matrix, .-_Z7sum_allR6matrix
	.globl	_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii
	.type	_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii, @function
_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii:
.LFB4279:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L455
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z12norm2_kernelPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L455:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L457
	call	__stack_chk_fail@PLT
.L457:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4279:
	.size	_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii, .-_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii
	.globl	_Z12norm2_kernelPdS_ii
	.type	_Z12norm2_kernelPdS_ii, @function
_Z12norm2_kernelPdS_ii:
.LFB4280:
	.cfi_startproc
	endbr64
	jmp	_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii
	.cfi_endproc
.LFE4280:
	.size	_Z12norm2_kernelPdS_ii, .-_Z12norm2_kernelPdS_ii
	.globl	_Z5norm2R6matrix
	.type	_Z5norm2R6matrix, @function
_Z5norm2R6matrix:
.LFB4174:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$8, %esi
	movq	%rdi, %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rdi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, %ecx
	movabsq	$4294967297, %rdi
	movl	$1, %esi
	movl	$1, 32(%rsp)
	movq	%rdi, %rdx
	movq	%rdi, 24(%rsp)
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L461
	movl	4(%rbx), %ecx
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	movq	(%rsp), %rsi
	call	_Z36__device_stub__Z12norm2_kernelPdS_iiPdS_ii
.L461:
	movq	(%rsp), %rsi
	leaq	24(%rsp), %rdi
	movl	$2, %ecx
	movl	$8, %edx
	call	cudaMemcpy@PLT
	movq	(%rsp), %rdi
	call	cudaFree@PLT
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L462
	call	__stack_chk_fail@PLT
.L462:
	movsd	24(%rsp), %xmm0
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	sqrt@PLT
	.cfi_endproc
.LFE4174:
	.size	_Z5norm2R6matrix, .-_Z5norm2R6matrix
	.globl	_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii
	.type	_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii, @function
_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii:
.LFB4281:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 8(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L465
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z11mean_kernelPdS_ii(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L465:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L467
	call	__stack_chk_fail@PLT
.L467:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4281:
	.size	_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii, .-_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii
	.globl	_Z11mean_kernelPdS_ii
	.type	_Z11mean_kernelPdS_ii, @function
_Z11mean_kernelPdS_ii:
.LFB4282:
	.cfi_startproc
	endbr64
	jmp	_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii
	.cfi_endproc
.LFE4282:
	.size	_Z11mean_kernelPdS_ii, .-_Z11mean_kernelPdS_ii
	.globl	_Z4meanR6matrix
	.type	_Z4meanR6matrix, @function
_Z4meanR6matrix:
.LFB4175:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4175
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movl	$1, %edx
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	(%rsi), %esi
.LEHB79:
	call	_ZN6matrixC1Eii
.LEHE79:
	movl	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB80:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L470
	movl	4(%rbx), %ecx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	(%rbx), %edx
	call	_Z35__device_stub__Z11mean_kernelPdS_iiPdS_ii
.LEHE80:
	jmp	.L470
.L474:
	endbr64
	movq	%rax, %rbx
.L473:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB81:
	call	_Unwind_Resume@PLT
.LEHE81:
.L470:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4175:
	.section	.gcc_except_table
.LLSDA4175:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4175-.LLSDACSB4175
.LLSDACSB4175:
	.uleb128 .LEHB79-.LFB4175
	.uleb128 .LEHE79-.LEHB79
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB80-.LFB4175
	.uleb128 .LEHE80-.LEHB80
	.uleb128 .L474-.LFB4175
	.uleb128 0
	.uleb128 .LEHB81-.LFB4175
	.uleb128 .LEHE81-.LEHB81
	.uleb128 0
	.uleb128 0
.LLSDACSE4175:
	.text
	.size	_Z4meanR6matrix, .-_Z4meanR6matrix
	.globl	_Z24__device_stub__Z3setPddiPddi
	.type	_Z24__device_stub__Z3setPddiPddi, @function
_Z24__device_stub__Z3setPddiPddi:
.LFB4283:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	40(%rsp), %rdx
	movl	%esi, 12(%rsp)
	leaq	56(%rsp), %rdi
	leaq	68(%rsp), %rsi
	movsd	%xmm0, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L476
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z3setPddi(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L476:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L478
	call	__stack_chk_fail@PLT
.L478:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4283:
	.size	_Z24__device_stub__Z3setPddiPddi, .-_Z24__device_stub__Z3setPddiPddi
	.globl	_Z3setPddi
	.type	_Z3setPddi, @function
_Z3setPddi:
.LFB4284:
	.cfi_startproc
	endbr64
	jmp	_Z24__device_stub__Z3setPddiPddi
	.cfi_endproc
.LFE4284:
	.size	_Z3setPddi, .-_Z3setPddi
	.globl	_Z5zerosi
	.type	_Z5zerosi, @function
_Z5zerosi:
.LFB4176:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4176
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movl	%esi, %ebx
	imull	%ebx, %ebx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
.LEHB82:
	call	_ZN6matrixC1Ei
.LEHE82:
	movl	$16777217, %edx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	leal	255(%rbx), %eax
	salq	$8, %rdx
	movl	$1, %ecx
	sarl	$8, %eax
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB83:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L481
	movq	8(%rbp), %rdi
	movl	%ebx, %esi
	xorps	%xmm0, %xmm0
	call	_Z24__device_stub__Z3setPddiPddi
.LEHE83:
	jmp	.L481
.L485:
	endbr64
	movq	%rax, %rbx
.L484:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB84:
	call	_Unwind_Resume@PLT
.LEHE84:
.L481:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4176:
	.section	.gcc_except_table
.LLSDA4176:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4176-.LLSDACSB4176
.LLSDACSB4176:
	.uleb128 .LEHB82-.LFB4176
	.uleb128 .LEHE82-.LEHB82
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB83-.LFB4176
	.uleb128 .LEHE83-.LEHB83
	.uleb128 .L485-.LFB4176
	.uleb128 0
	.uleb128 .LEHB84-.LFB4176
	.uleb128 .LEHE84-.LEHB84
	.uleb128 0
	.uleb128 0
.LLSDACSE4176:
	.text
	.size	_Z5zerosi, .-_Z5zerosi
	.globl	_Z5zerosR6matrix
	.type	_Z5zerosR6matrix, @function
_Z5zerosR6matrix:
.LFB4177:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4177
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$2, %ecx
	movl	$16, %edx
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 80
	movq	8(%rsi), %rsi
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rdi
.LEHB85:
	call	cudaMemcpy@PLT
	cvttsd2sil	24(%rsp), %ebp
	movq	%rbx, %rdi
	cvttsd2sil	32(%rsp), %r12d
	movl	%ebp, %esi
	imull	%r12d, %ebp
	movl	%r12d, %edx
	call	_ZN6matrixC1Eii
.LEHE85:
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	leal	255(%rbp), %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, (%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 4(%rsp)
	movq	(%rsp), %rdi
	movl	8(%rsp), %esi
.LEHB86:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L487
	movq	8(%rbx), %rdi
	movl	%ebp, %esi
	xorps	%xmm0, %xmm0
	call	_Z24__device_stub__Z3setPddiPddi
.LEHE86:
	jmp	.L487
.L493:
	endbr64
	movq	%rax, %rbp
.L490:
	movq	%rbx, %rdi
	call	_ZN6matrixD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L495
	movq	%rbp, %rdi
.LEHB87:
	call	_Unwind_Resume@PLT
.LEHE87:
.L487:
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L492
.L495:
	call	__stack_chk_fail@PLT
.L492:
	addq	$48, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4177:
	.section	.gcc_except_table
.LLSDA4177:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4177-.LLSDACSB4177
.LLSDACSB4177:
	.uleb128 .LEHB85-.LFB4177
	.uleb128 .LEHE85-.LEHB85
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB86-.LFB4177
	.uleb128 .LEHE86-.LEHB86
	.uleb128 .L493-.LFB4177
	.uleb128 0
	.uleb128 .LEHB87-.LFB4177
	.uleb128 .LEHE87-.LEHB87
	.uleb128 0
	.uleb128 0
.LLSDACSE4177:
	.text
	.size	_Z5zerosR6matrix, .-_Z5zerosR6matrix
	.globl	_Z5zerosii
	.type	_Z5zerosii, @function
_Z5zerosii:
.LFB4178:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4178
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	%edx, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movl	%esi, %ebx
	imull	%r12d, %ebx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
.LEHB88:
	call	_ZN6matrixC1Eii
.LEHE88:
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	leal	255(%rbx), %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB89:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L496
	movq	8(%rbp), %rdi
	movl	%ebx, %esi
	xorps	%xmm0, %xmm0
	call	_Z24__device_stub__Z3setPddiPddi
.LEHE89:
	jmp	.L496
.L500:
	endbr64
	movq	%rax, %rbx
.L499:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB90:
	call	_Unwind_Resume@PLT
.LEHE90:
.L496:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4178:
	.section	.gcc_except_table
.LLSDA4178:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4178-.LLSDACSB4178
.LLSDACSB4178:
	.uleb128 .LEHB88-.LFB4178
	.uleb128 .LEHE88-.LEHB88
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB89-.LFB4178
	.uleb128 .LEHE89-.LEHB89
	.uleb128 .L500-.LFB4178
	.uleb128 0
	.uleb128 .LEHB90-.LFB4178
	.uleb128 .LEHE90-.LEHB90
	.uleb128 0
	.uleb128 0
.LLSDACSE4178:
	.text
	.size	_Z5zerosii, .-_Z5zerosii
	.globl	_Z4onesi
	.type	_Z4onesi, @function
_Z4onesi:
.LFB4179:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4179
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movl	%esi, %ebx
	imull	%ebx, %ebx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
.LEHB91:
	call	_ZN6matrixC1Ei
.LEHE91:
	movl	$16777217, %edx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	leal	255(%rbx), %eax
	salq	$8, %rdx
	movl	$1, %ecx
	sarl	$8, %eax
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB92:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L502
	movq	8(%rbp), %rdi
	movsd	.LC3(%rip), %xmm0
	movl	%ebx, %esi
	call	_Z24__device_stub__Z3setPddiPddi
.LEHE92:
	jmp	.L502
.L506:
	endbr64
	movq	%rax, %rbx
.L505:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB93:
	call	_Unwind_Resume@PLT
.LEHE93:
.L502:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4179:
	.section	.gcc_except_table
.LLSDA4179:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4179-.LLSDACSB4179
.LLSDACSB4179:
	.uleb128 .LEHB91-.LFB4179
	.uleb128 .LEHE91-.LEHB91
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB92-.LFB4179
	.uleb128 .LEHE92-.LEHB92
	.uleb128 .L506-.LFB4179
	.uleb128 0
	.uleb128 .LEHB93-.LFB4179
	.uleb128 .LEHE93-.LEHB93
	.uleb128 0
	.uleb128 0
.LLSDACSE4179:
	.text
	.size	_Z4onesi, .-_Z4onesi
	.globl	_Z4onesii
	.type	_Z4onesii, @function
_Z4onesii:
.LFB4180:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4180
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	%edx, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movl	%esi, %ebx
	imull	%r12d, %ebx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
.LEHB94:
	call	_ZN6matrixC1Eii
.LEHE94:
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	leal	255(%rbx), %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB95:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L508
	movq	8(%rbp), %rdi
	movsd	.LC3(%rip), %xmm0
	movl	%ebx, %esi
	call	_Z24__device_stub__Z3setPddiPddi
.LEHE95:
	jmp	.L508
.L512:
	endbr64
	movq	%rax, %rbx
.L511:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB96:
	call	_Unwind_Resume@PLT
.LEHE96:
.L508:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4180:
	.section	.gcc_except_table
.LLSDA4180:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4180-.LLSDACSB4180
.LLSDACSB4180:
	.uleb128 .LEHB94-.LFB4180
	.uleb128 .LEHE94-.LEHB94
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB95-.LFB4180
	.uleb128 .LEHE95-.LEHB95
	.uleb128 .L512-.LFB4180
	.uleb128 0
	.uleb128 .LEHB96-.LFB4180
	.uleb128 .LEHE96-.LEHB96
	.uleb128 0
	.uleb128 0
.LLSDACSE4180:
	.text
	.size	_Z4onesii, .-_Z4onesii
	.globl	_Z4onesR6matrix
	.type	_Z4onesR6matrix, @function
_Z4onesR6matrix:
.LFB4181:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4181
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$2, %ecx
	movl	$16, %edx
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 80
	movq	8(%rsi), %rsi
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rdi
.LEHB97:
	call	cudaMemcpy@PLT
	cvttsd2sil	24(%rsp), %ebp
	movq	%rbx, %rdi
	cvttsd2sil	32(%rsp), %r12d
	movl	%ebp, %esi
	imull	%r12d, %ebp
	movl	%r12d, %edx
	call	_ZN6matrixC1Eii
.LEHE97:
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	leal	255(%rbp), %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, (%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 4(%rsp)
	movq	(%rsp), %rdi
	movl	8(%rsp), %esi
.LEHB98:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L514
	movq	8(%rbx), %rdi
	movsd	.LC3(%rip), %xmm0
	movl	%ebp, %esi
	call	_Z24__device_stub__Z3setPddiPddi
.LEHE98:
	jmp	.L514
.L520:
	endbr64
	movq	%rax, %rbp
.L517:
	movq	%rbx, %rdi
	call	_ZN6matrixD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L522
	movq	%rbp, %rdi
.LEHB99:
	call	_Unwind_Resume@PLT
.LEHE99:
.L514:
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L519
.L522:
	call	__stack_chk_fail@PLT
.L519:
	addq	$48, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4181:
	.section	.gcc_except_table
.LLSDA4181:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4181-.LLSDACSB4181
.LLSDACSB4181:
	.uleb128 .LEHB97-.LFB4181
	.uleb128 .LEHE97-.LEHB97
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB98-.LFB4181
	.uleb128 .LEHE98-.LEHB98
	.uleb128 .L520-.LFB4181
	.uleb128 0
	.uleb128 .LEHB99-.LFB4181
	.uleb128 .LEHE99-.LEHB99
	.uleb128 0
	.uleb128 0
.LLSDACSE4181:
	.text
	.size	_Z4onesR6matrix, .-_Z4onesR6matrix
	.globl	_Z34__device_stub__Z11square_rootPdS_iPdS_i
	.type	_Z34__device_stub__Z11square_rootPdS_iPdS_i, @function
_Z34__device_stub__Z11square_rootPdS_iPdS_i:
.LFB4285:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rcx
	leaq	56(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	68(%rsp), %rsi
	movl	%edx, 12(%rsp)
	leaq	40(%rsp), %rdx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L523
	pushq	48(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z11square_rootPdS_i(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 144
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L523:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L525
	call	__stack_chk_fail@PLT
.L525:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4285:
	.size	_Z34__device_stub__Z11square_rootPdS_iPdS_i, .-_Z34__device_stub__Z11square_rootPdS_iPdS_i
	.globl	_Z11square_rootPdS_i
	.type	_Z11square_rootPdS_i, @function
_Z11square_rootPdS_i:
.LFB4286:
	.cfi_startproc
	endbr64
	jmp	_Z34__device_stub__Z11square_rootPdS_iPdS_i
	.cfi_endproc
.LFE4286:
	.size	_Z11square_rootPdS_i, .-_Z11square_rootPdS_i
	.globl	_Z4sqrtR6matrix
	.type	_Z4sqrtR6matrix, @function
_Z4sqrtR6matrix:
.LFB4182:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4182
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB100:
	call	_ZN6matrixC1Eii
.LEHE100:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB101:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L528
	movl	(%rbx), %edx
	imull	4(%rbx), %edx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	call	_Z34__device_stub__Z11square_rootPdS_iPdS_i
.LEHE101:
	jmp	.L528
.L532:
	endbr64
	movq	%rax, %rbx
.L531:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB102:
	call	_Unwind_Resume@PLT
.LEHE102:
.L528:
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4182:
	.section	.gcc_except_table
.LLSDA4182:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4182-.LLSDACSB4182
.LLSDACSB4182:
	.uleb128 .LEHB100-.LFB4182
	.uleb128 .LEHE100-.LEHB100
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB101-.LFB4182
	.uleb128 .LEHE101-.LEHB101
	.uleb128 .L532-.LFB4182
	.uleb128 0
	.uleb128 .LEHB102-.LFB4182
	.uleb128 .LEHE102-.LEHB102
	.uleb128 0
	.uleb128 0
.LLSDACSE4182:
	.text
	.size	_Z4sqrtR6matrix, .-_Z4sqrtR6matrix
	.globl	_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i
	.type	_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i, @function
_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i:
.LFB4287:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L534
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z8multiplyPdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L534:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L536
	call	__stack_chk_fail@PLT
.L536:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4287:
	.size	_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i, .-_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i
	.globl	_Z8multiplyPdS_S_i
	.type	_Z8multiplyPdS_S_i, @function
_Z8multiplyPdS_S_i:
.LFB4288:
	.cfi_startproc
	endbr64
	jmp	_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i
	.cfi_endproc
.LFE4288:
	.size	_Z8multiplyPdS_S_i, .-_Z8multiplyPdS_S_i
	.globl	_Z7dot_mulR6matrixS0_
	.type	_Z7dot_mulR6matrixS0_, @function
_Z7dot_mulR6matrixS0_:
.LFB4183:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4183
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB103:
	call	_ZN6matrixC1Eii
.LEHE103:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB104:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L539
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z32__device_stub__Z8multiplyPdS_S_iPdS_S_i
.LEHE104:
	jmp	.L539
.L543:
	endbr64
	movq	%rax, %rbx
.L542:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB105:
	call	_Unwind_Resume@PLT
.LEHE105:
.L539:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4183:
	.section	.gcc_except_table
.LLSDA4183:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4183-.LLSDACSB4183
.LLSDACSB4183:
	.uleb128 .LEHB103-.LFB4183
	.uleb128 .LEHE103-.LEHB103
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB104-.LFB4183
	.uleb128 .LEHE104-.LEHB104
	.uleb128 .L543-.LFB4183
	.uleb128 0
	.uleb128 .LEHB105-.LFB4183
	.uleb128 .LEHE105-.LEHB105
	.uleb128 0
	.uleb128 0
.LLSDACSE4183:
	.text
	.size	_Z7dot_mulR6matrixS0_, .-_Z7dot_mulR6matrixS0_
	.globl	_Z30__device_stub__Z6dividePdS_S_iPdS_S_i
	.type	_Z30__device_stub__Z6dividePdS_S_iPdS_S_i, @function
_Z30__device_stub__Z6dividePdS_S_iPdS_S_i:
.LFB4289:
	.cfi_startproc
	endbr64
	subq	$120, %rsp
	.cfi_def_cfa_offset 128
	movq	%rdi, 24(%rsp)
	leaq	48(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	40(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 72(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 80(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 96(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L545
	pushq	40(%rsp)
	.cfi_def_cfa_offset 136
	leaq	_Z6dividePdS_S_i(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 144
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	88(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 136
	popq	%rdx
	.cfi_def_cfa_offset 128
.L545:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	je	.L547
	call	__stack_chk_fail@PLT
.L547:
	addq	$120, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4289:
	.size	_Z30__device_stub__Z6dividePdS_S_iPdS_S_i, .-_Z30__device_stub__Z6dividePdS_S_iPdS_S_i
	.globl	_Z6dividePdS_S_i
	.type	_Z6dividePdS_S_i, @function
_Z6dividePdS_S_i:
.LFB4290:
	.cfi_startproc
	endbr64
	jmp	_Z30__device_stub__Z6dividePdS_S_iPdS_S_i
	.cfi_endproc
.LFE4290:
	.size	_Z6dividePdS_S_i, .-_Z6dividePdS_S_i
	.globl	_Z7dot_divR6matrixS0_
	.type	_Z7dot_divR6matrixS0_, @function
_Z7dot_divR6matrixS0_:
.LFB4184:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4184
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rsi), %edx
	movl	(%rsi), %esi
.LEHB106:
	call	_ZN6matrixC1Eii
.LEHE106:
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
.LEHB107:
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L550
	movl	(%rbx), %ecx
	imull	4(%rbx), %ecx
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	call	_Z30__device_stub__Z6dividePdS_S_iPdS_S_i
.LEHE107:
	jmp	.L550
.L554:
	endbr64
	movq	%rax, %rbx
.L553:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB108:
	call	_Unwind_Resume@PLT
.LEHE108:
.L550:
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	movq	%rbp, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4184:
	.section	.gcc_except_table
.LLSDA4184:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4184-.LLSDACSB4184
.LLSDACSB4184:
	.uleb128 .LEHB106-.LFB4184
	.uleb128 .LEHE106-.LEHB106
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB107-.LFB4184
	.uleb128 .LEHE107-.LEHB107
	.uleb128 .L554-.LFB4184
	.uleb128 0
	.uleb128 .LEHB108-.LFB4184
	.uleb128 .LEHE108-.LEHB108
	.uleb128 0
	.uleb128 0
.LLSDACSE4184:
	.text
	.size	_Z7dot_divR6matrixS0_, .-_Z7dot_divR6matrixS0_
	.globl	_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii
	.type	_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii, @function
_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii:
.LFB4291:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 40(%rsp)
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movq	%rcx, 16(%rsp)
	leaq	56(%rsp), %rcx
	movl	%r8d, 12(%rsp)
	movl	%r9d, 8(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 88(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L556
	pushq	56(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z13get_dx_kernelPdS_S_S_ii(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 176
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	104(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L556:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L558
	call	__stack_chk_fail@PLT
.L558:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4291:
	.size	_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii, .-_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii
	.globl	_Z13get_dx_kernelPdS_S_S_ii
	.type	_Z13get_dx_kernelPdS_S_S_ii, @function
_Z13get_dx_kernelPdS_S_S_ii:
.LFB4292:
	.cfi_startproc
	endbr64
	jmp	_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii
	.cfi_endproc
.LFE4292:
	.size	_Z13get_dx_kernelPdS_S_S_ii, .-_Z13get_dx_kernelPdS_S_S_ii
	.globl	_Z6get_dxR6matrixS0_S0_
	.type	_Z6get_dxR6matrixS0_S0_, @function
_Z6get_dxR6matrixS0_S0_:
.LFB4185:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4185
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%rdx, %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rsi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	movq	%rdi, %rbx
	subq	$80, %rsp
	.cfi_def_cfa_offset 128
	movq	8(%rdi), %rdi
	movq	%fs:40, %rax
	movq	%rax, 72(%rsp)
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L562
.LEHB109:
	call	cudaFree@PLT
.L562:
	movl	0(%r13), %eax
	movl	4(%r13), %edx
	leaq	40(%rsp), %rbp
	movl	$1, %esi
	movq	%rbp, %rdi
	movl	%eax, (%rbx)
	movl	%edx, 4(%rbx)
	call	_ZN6matrixC1Eii
.LEHE109:
	movslq	(%rbx), %rsi
	movslq	4(%rbx), %rax
	leaq	8(%rbx), %rdi
	imulq	%rax, %rsi
	salq	$3, %rsi
.LEHB110:
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movl	4(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movl	$1, 64(%rsp)
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movq	%rdx, 56(%rsp)
	movl	%eax, 28(%rsp)
	movl	%eax, %r12d
	movabsq	$4294967297, %rax
	movq	%rax, 32(%rsp)
	movq	28(%rsp), %rdi
	movl	36(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	je	.L563
.L565:
	movl	%r12d, 28(%rsp)
	movl	$16777217, %edx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movabsq	$4294967297, %rax
	salq	$8, %rdx
	movl	$1, %ecx
	movl	$1, 64(%rsp)
	movq	%rax, 32(%rsp)
	movq	28(%rsp), %rdi
	movl	36(%rsp), %esi
	movq	%rdx, 56(%rsp)
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	je	.L566
	jmp	.L568
.L563:
	movl	(%rbx), %esi
	imull	4(%rbx), %esi
	xorps	%xmm0, %xmm0
	movq	8(%rbx), %rdi
	call	_Z24__device_stub__Z3setPddiPddi
	jmp	.L565
.L566:
	movq	8(%r14), %rdx
	movq	8(%r13), %rsi
	movq	8(%rbx), %rdi
	movl	4(%rbx), %r9d
	movl	(%rbx), %r8d
	movq	48(%rsp), %rcx
	call	_Z41__device_stub__Z13get_dx_kernelPdS_S_S_iiPdS_S_S_ii
.L568:
	leaq	56(%rsp), %r12
	movq	%rbp, %rsi
	movq	%r12, %rdi
	call	_Z3sumR6matrix
.LEHE110:
	movl	$1, %esi
	movq	%r12, %rdi
.LEHB111:
	call	_ZN6matrix3getEi
.LEHE111:
	movq	%r12, %rdi
	movsd	%xmm0, 8(%rsp)
	call	_ZN6matrixD1Ev
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movsd	8(%rsp), %xmm0
	movq	72(%rsp), %rax
	subq	%fs:40, %rax
	je	.L572
	jmp	.L579
.L574:
	endbr64
	movq	%rax, %rbx
.L569:
	movq	%r12, %rdi
	call	_ZN6matrixD1Ev
	jmp	.L570
.L573:
	endbr64
	movq	%rax, %rbx
.L570:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	72(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L579
	movq	%rbx, %rdi
.LEHB112:
	call	_Unwind_Resume@PLT
.LEHE112:
.L579:
	call	__stack_chk_fail@PLT
.L572:
	addq	$80, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.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
	.cfi_endproc
.LFE4185:
	.section	.gcc_except_table
.LLSDA4185:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4185-.LLSDACSB4185
.LLSDACSB4185:
	.uleb128 .LEHB109-.LFB4185
	.uleb128 .LEHE109-.LEHB109
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB110-.LFB4185
	.uleb128 .LEHE110-.LEHB110
	.uleb128 .L573-.LFB4185
	.uleb128 0
	.uleb128 .LEHB111-.LFB4185
	.uleb128 .LEHE111-.LEHB111
	.uleb128 .L574-.LFB4185
	.uleb128 0
	.uleb128 .LEHB112-.LFB4185
	.uleb128 .LEHE112-.LEHB112
	.uleb128 0
	.uleb128 0
.LLSDACSE4185:
	.text
	.size	_Z6get_dxR6matrixS0_S0_, .-_Z6get_dxR6matrixS0_S0_
	.globl	_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii
	.type	_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii, @function
_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii:
.LFB4293:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 40(%rsp)
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movl	%ecx, 20(%rsp)
	leaq	56(%rsp), %rcx
	movl	%r8d, 16(%rsp)
	movl	%r9d, 12(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 88(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L581
	pushq	56(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z13get_dW_kernelPdS_S_iii(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 176
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	104(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L581:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L583
	call	__stack_chk_fail@PLT
.L583:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4293:
	.size	_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii, .-_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii
	.globl	_Z13get_dW_kernelPdS_S_iii
	.type	_Z13get_dW_kernelPdS_S_iii, @function
_Z13get_dW_kernelPdS_S_iii:
.LFB4294:
	.cfi_startproc
	endbr64
	jmp	_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii
	.cfi_endproc
.LFE4294:
	.size	_Z13get_dW_kernelPdS_S_iii, .-_Z13get_dW_kernelPdS_S_iii
	.globl	_Z6get_dWR6matrixS0_S0_
	.type	_Z6get_dWR6matrixS0_S0_, @function
_Z6get_dWR6matrixS0_S0_:
.LFB4186:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	(%rsi), %eax
	movl	%eax, (%rdi)
	movl	(%rdx), %eax
	movl	%eax, 4(%rdi)
	movq	8(%rdi), %rdi
	testq	%rdi, %rdi
	je	.L587
	call	cudaFree@PLT
.L587:
	movslq	4(%rbx), %rax
	movslq	(%rbx), %rsi
	leaq	8(%rbx), %rdi
	imulq	%rax, %rsi
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movl	4(%rbx), %eax
	imull	(%rbx), %eax
	movl	$256, %ecx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L586
	movq	8(%rbp), %rdx
	movq	8(%r12), %rsi
	movq	8(%rbx), %rdi
	movl	4(%rbp), %r9d
	movl	4(%rbx), %r8d
	movl	(%rbx), %ecx
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	jmp	_Z40__device_stub__Z13get_dW_kernelPdS_S_iiiPdS_S_iii
.L586:
	.cfi_restore_state
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4186:
	.size	_Z6get_dWR6matrixS0_S0_, .-_Z6get_dWR6matrixS0_S0_
	.globl	_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii
	.type	_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii, @function
_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii:
.LFB4295:
	.cfi_startproc
	endbr64
	subq	$168, %rsp
	.cfi_def_cfa_offset 176
	movq	%rdi, 40(%rsp)
	leaq	72(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	84(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	56(%rsp), %rdx
	movq	%rcx, 16(%rsp)
	leaq	64(%rsp), %rcx
	movl	%r8d, 12(%rsp)
	movl	%r9d, 8(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 152(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 80(%rsp)
	movq	%rax, 96(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 128(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 136(%rsp)
	leaq	176(%rsp), %rax
	movq	%rax, 144(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 72(%rsp)
	movq	%rax, 84(%rsp)
	movl	$1, 92(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L593
	pushq	64(%rsp)
	.cfi_def_cfa_offset 184
	leaq	_Z17update_dX1_kernelPdS_S_S_iii(%rip), %rdi
	pushq	64(%rsp)
	.cfi_def_cfa_offset 192
	movq	100(%rsp), %rcx
	movl	108(%rsp), %r8d
	movq	88(%rsp), %rsi
	movl	96(%rsp), %edx
	leaq	112(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 184
	popq	%rdx
	.cfi_def_cfa_offset 176
.L593:
	movq	152(%rsp), %rax
	subq	%fs:40, %rax
	je	.L595
	call	__stack_chk_fail@PLT
.L595:
	addq	$168, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4295:
	.size	_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii, .-_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii
	.globl	_Z17update_dX1_kernelPdS_S_S_iii
	.type	_Z17update_dX1_kernelPdS_S_S_iii, @function
_Z17update_dX1_kernelPdS_S_S_iii:
.LFB4296:
	.cfi_startproc
	endbr64
	jmp	_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii
	.cfi_endproc
.LFE4296:
	.size	_Z17update_dX1_kernelPdS_S_S_iii, .-_Z17update_dX1_kernelPdS_S_S_iii
	.globl	_Z10update_dX1R6matrixS0_S0_
	.type	_Z10update_dX1R6matrixS0_S0_, @function
_Z10update_dX1R6matrixS0_S0_:
.LFB4187:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 80
	movslq	4(%rdi), %rsi
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	movslq	4(%rbx), %rax
	leaq	8(%rsp), %rdi
	imulq	%rax, %rsi
	salq	$3, %rsi
	call	_Z10cudaMallocIdE9cudaErrorPPT_m.isra.0
	movl	4(%rbp), %eax
	imull	4(%rbx), %eax
	xorl	%r9d, %r9d
	movl	$256, %ecx
	xorl	%r8d, %r8d
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 16(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 20(%rsp)
	movq	16(%rsp), %rdi
	movl	24(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L599
	movq	8(%r12), %rcx
	movq	8(%rbp), %rdx
	movq	8(%rbx), %rdi
	pushq	%rax
	.cfi_def_cfa_offset 88
	movl	4(%rbx), %eax
	pushq	%rax
	.cfi_def_cfa_offset 96
	movq	24(%rsp), %rsi
	movl	4(%rbp), %r9d
	movl	0(%rbp), %r8d
	call	_Z46__device_stub__Z17update_dX1_kernelPdS_S_S_iiiPdS_S_S_iii
	popq	%rdx
	.cfi_def_cfa_offset 88
	popq	%rcx
	.cfi_def_cfa_offset 80
.L599:
	movq	8(%rbx), %rdi
	call	cudaFree@PLT
	movq	8(%rsp), %rax
	movq	%rax, 8(%rbx)
	movl	(%r12), %eax
	movl	%eax, (%rbx)
	movl	4(%r12), %eax
	movl	%eax, 4(%rbx)
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L600
	call	__stack_chk_fail@PLT
.L600:
	addq	$48, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4187:
	.size	_Z10update_dX1R6matrixS0_S0_, .-_Z10update_dX1R6matrixS0_S0_
	.globl	_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii
	.type	_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii, @function
_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii:
.LFB4297:
	.cfi_startproc
	endbr64
	subq	$136, %rsp
	.cfi_def_cfa_offset 144
	movq	%rdi, 24(%rsp)
	leaq	56(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	68(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	40(%rsp), %rdx
	movl	%ecx, 4(%rsp)
	leaq	48(%rsp), %rcx
	movl	%r8d, (%rsp)
	movq	%fs:40, %rax
	movq	%rax, 120(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 80(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 88(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 96(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 104(%rsp)
	movq	%rsp, %rax
	movq	%rax, 112(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L602
	pushq	48(%rsp)
	.cfi_def_cfa_offset 152
	leaq	_Z17update_dX2_kernelPdS_S_ii(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 160
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	96(%rsp), %r9
	call	_Z16cudaLaunchKernelIcE9cudaErrorPT_4dim3S3_PPvmP11CUstream_st.isra.0
	popq	%rax
	.cfi_def_cfa_offset 152
	popq	%rdx
	.cfi_def_cfa_offset 144
.L602:
	movq	120(%rsp), %rax
	subq	%fs:40, %rax
	je	.L604
	call	__stack_chk_fail@PLT
.L604:
	addq	$136, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4297:
	.size	_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii, .-_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii
	.globl	_Z17update_dX2_kernelPdS_S_ii
	.type	_Z17update_dX2_kernelPdS_S_ii, @function
_Z17update_dX2_kernelPdS_S_ii:
.LFB4298:
	.cfi_startproc
	endbr64
	jmp	_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii
	.cfi_endproc
.LFE4298:
	.size	_Z17update_dX2_kernelPdS_S_ii, .-_Z17update_dX2_kernelPdS_S_ii
	.globl	_Z10update_dX2R6matrixS0_S0_
	.type	_Z10update_dX2R6matrixS0_S0_, @function
_Z10update_dX2R6matrixS0_S0_:
.LFB4188:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$256, %ecx
	movq	%rdx, %r12
	xorl	%r9d, %r9d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rsi, %rbp
	xorl	%r8d, %r8d
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	movl	4(%rdi), %eax
	imull	(%rdi), %eax
	addl	$255, %eax
	cltd
	idivl	%ecx
	movl	$16777217, %edx
	movl	$1, %ecx
	salq	$8, %rdx
	movl	%eax, 8(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 12(%rsp)
	movq	8(%rsp), %rdi
	movl	16(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L607
	movq	8(%r12), %rdx
	movq	8(%rbp), %rsi
	movq	8(%rbx), %rdi
	movl	4(%rbx), %r8d
	movl	(%rbx), %ecx
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	jmp	_Z43__device_stub__Z17update_dX2_kernelPdS_S_iiPdS_S_ii
.L607:
	.cfi_restore_state
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4188:
	.size	_Z10update_dX2R6matrixS0_S0_, .-_Z10update_dX2R6matrixS0_S0_
	.section	.rodata.str1.1
.LC4:
	.string	"_Z17update_dX2_kernelPdS_S_ii"
.LC5:
	.string	"_Z17update_dX1_kernelPdS_S_S_iii"
.LC6:
	.string	"_Z13get_dW_kernelPdS_S_iii"
.LC7:
	.string	"_Z13get_dx_kernelPdS_S_S_ii"
.LC8:
	.string	"_Z6dividePdS_S_i"
.LC9:
	.string	"_Z8multiplyPdS_S_i"
.LC10:
	.string	"_Z11square_rootPdS_i"
.LC11:
	.string	"_Z3setPddi"
.LC12:
	.string	"_Z11mean_kernelPdS_ii"
.LC13:
	.string	"_Z12norm2_kernelPdS_ii"
.LC14:
	.string	"_Z14sum_all_kernelPdS_ii"
.LC15:
	.string	"_Z10sum_kernelPdS_ii"
.LC16:
	.string	"_Z7maximumPdS_S_i"
.LC17:
	.string	"_Z7maximumPddS_i"
.LC18:
	.string	"_Z5equalPdS_S_i"
.LC19:
	.string	"_Z5equalPddS_i"
.LC20:
	.string	"_Z13greater_equalPdS_S_i"
.LC21:
	.string	"_Z13greater_equalPddS_i"
.LC22:
	.string	"_Z12greater_thanPdS_S_i"
.LC23:
	.string	"_Z12greater_thanPddS_i"
.LC24:
	.string	"_Z7cut_offPddi"
.LC25:
	.string	"_Z13divide_columnPdS_ii"
.LC26:
	.string	"_Z8multiplyPddi"
.LC27:
	.string	"_Z10sub_columnPdS_ii"
.LC28:
	.string	"_Z3subPdS_i"
.LC29:
	.string	"_Z3addPddi"
.LC30:
	.string	"_Z3addPdS_i"
.LC31:
	.string	"_Z6dividePddi"
.LC32:
	.string	"_Z6dividePddS_i"
.LC33:
	.string	"_Z6dividePdS_i"
.LC34:
	.string	"_Z8multiplyPddS_i"
.LC35:
	.string	"_Z24transposed_product_firstPdS_S_iii"
.LC36:
	.string	"_Z25transposed_product_secondPdS_S_iii"
.LC37:
	.string	"_Z7productPdS_S_iii"
.LC38:
	.string	"_Z10mul_columnPdS_ii"
.LC39:
	.string	"_Z3subPddS_i"
.LC40:
	.string	"_Z3subPdS_S_i"
.LC41:
	.string	"_Z3addPddS_i"
.LC42:
	.string	"_Z10add_columnPdS_ii"
.LC43:
	.string	"_Z3addPdS_S_i"
.LC44:
	.string	"_Z10get_columnPdS_iiii"
.LC45:
	.string	"_Z16transpose_kernelPdS_ii"
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB4300:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC4(%rip), %rdx
	movq	%rax, %rdi
	movq	%rax, %rbx
	pushq	$0
	.cfi_def_cfa_offset 40
	movq	%rdx, %rcx
	leaq	_Z17update_dX2_kernelPdS_S_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 48
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC5(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z17update_dX1_kernelPdS_S_S_iii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC6(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z13get_dW_kernelPdS_S_iii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC7(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z13get_dx_kernelPdS_S_S_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC8(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z6dividePdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC9(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z8multiplyPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC10(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z11square_rootPdS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC11(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3setPddi(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	leaq	.LC12(%rip), %rdx
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	_Z11mean_kernelPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC13(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z12norm2_kernelPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC14(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z14sum_all_kernelPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC15(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z10sum_kernelPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC16(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z7maximumPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC17(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z7maximumPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC18(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z5equalPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC19(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z5equalPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	leaq	.LC20(%rip), %rdx
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	_Z13greater_equalPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC21(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z13greater_equalPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC22(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z12greater_thanPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC23(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z12greater_thanPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC24(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z7cut_offPddi(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC25(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z13divide_columnPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC26(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z8multiplyPddi(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC27(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z10sub_columnPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	leaq	.LC28(%rip), %rdx
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	_Z3subPdS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC29(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3addPddi(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC30(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3addPdS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC31(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z6dividePddi(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC32(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z6dividePddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC33(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z6dividePdS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC34(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z8multiplyPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC35(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z24transposed_product_firstPdS_S_iii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	leaq	.LC36(%rip), %rdx
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	_Z25transposed_product_secondPdS_S_iii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC37(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z7productPdS_S_iii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC38(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z10mul_columnPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC39(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3subPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC40(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3subPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC41(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3addPddS_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC42(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z10add_columnPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC43(%rip), %rdx
	movq	%rbx, %rdi
	leaq	_Z3addPdS_S_i(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	leaq	.LC44(%rip), %rdx
	pushq	$0
	.cfi_def_cfa_offset 24
	movq	%rdx, %rcx
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	_Z10get_columnPdS_iiii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	xorl	%r9d, %r9d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC45(%rip), %rdx
	orl	$-1, %r8d
	leaq	_Z16transpose_kernelPdS_ii(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE4300:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.text._ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv,"axG",@progbits,_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv,comdat
	.align 2
	.weak	_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv
	.type	_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv, @function
_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv:
.LFB4968:
	.cfi_startproc
	endbr64
	movq	%rdi, %rax
	xorl	%edx, %edx
	movl	$2567483615, %edi
.L614:
	movq	(%rax,%rdx,8), %rsi
	incq	%rdx
	movq	(%rax,%rdx,8), %rcx
	andq	$-2147483648, %rsi
	andl	$2147483647, %ecx
	orq	%rsi, %rcx
	movq	%rcx, %rsi
	shrq	%rsi
	xorq	3168(%rax,%rdx,8), %rsi
	andl	$1, %ecx
	je	.L613
	movq	%rdi, %rcx
.L613:
	xorq	%rsi, %rcx
	movq	%rcx, -8(%rax,%rdx,8)
	cmpq	$227, %rdx
	jne	.L614
	movl	$2567483615, %edi
.L616:
	movq	(%rax,%rdx,8), %rsi
	incq	%rdx
	movq	(%rax,%rdx,8), %rcx
	andq	$-2147483648, %rsi
	andl	$2147483647, %ecx
	orq	%rsi, %rcx
	movq	%rcx, %rsi
	shrq	%rsi
	xorq	-1824(%rax,%rdx,8), %rsi
	andl	$1, %ecx
	je	.L615
	movq	%rdi, %rcx
.L615:
	xorq	%rsi, %rcx
	movq	%rcx, -8(%rax,%rdx,8)
	cmpq	$623, %rdx
	jne	.L616
	movq	4984(%rax), %rdx
	movq	(%rax), %rcx
	andq	$-2147483648, %rdx
	andl	$2147483647, %ecx
	orq	%rcx, %rdx
	movq	%rdx, %rcx
	shrq	%rcx
	xorq	3168(%rax), %rcx
	andl	$1, %edx
	je	.L617
	movl	$2567483615, %edx
.L617:
	xorq	%rcx, %rdx
	movq	%rdx, 4984(%rax)
	xorl	%edx, %edx
	movq	%rdx, 4992(%rax)
	ret
	.cfi_endproc
.LFE4968:
	.size	_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv, .-_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv
	.section	.text._ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_,"axG",@progbits,_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_,comdat
	.weak	_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_
	.type	_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_, @function
_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_:
.LFB4934:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	xorps	%xmm0, %xmm0
	movl	$2, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movsd	.LC3(%rip), %xmm2
	movsd	%xmm2, (%rsp)
.L633:
	cmpq	$623, 4992(%rbx)
	jbe	.L630
	movq	%rbx, %rdi
	movsd	%xmm0, 8(%rsp)
	call	_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv
	movsd	8(%rsp), %xmm0
.L630:
	movq	4992(%rbx), %rax
	leaq	1(%rax), %rdx
	movq	(%rbx,%rax,8), %rax
	movq	%rdx, 4992(%rbx)
	movq	%rax, %rdx
	shrq	$11, %rdx
	movl	%edx, %edx
	xorq	%rdx, %rax
	movq	%rax, %rdx
	salq	$7, %rdx
	andl	$2636928640, %edx
	xorq	%rdx, %rax
	movq	%rax, %rdx
	salq	$15, %rdx
	andl	$4022730752, %edx
	xorq	%rdx, %rax
	movq	%rax, %rdx
	shrq	$18, %rdx
	xorq	%rdx, %rax
	js	.L631
	cvtsi2sdq	%rax, %xmm1
	jmp	.L632
.L631:
	movq	%rax, %rdx
	andl	$1, %eax
	shrq	%rdx
	orq	%rax, %rdx
	cvtsi2sdq	%rdx, %xmm1
	addsd	%xmm1, %xmm1
.L632:
	mulsd	(%rsp), %xmm1
	flds	.LC47(%rip)
	decl	%ebp
	fmull	(%rsp)
	addsd	%xmm1, %xmm0
	fstpl	(%rsp)
	je	.L638
	movl	$1, %ebp
	jmp	.L633
.L638:
	divsd	(%rsp), %xmm0
	comisd	.LC3(%rip), %xmm0
	jb	.L629
	movsd	.LC46(%rip), %xmm0
.L629:
	addq	$24, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4934:
	.size	_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_, .-_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_
	.section	.text._ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE,"axG",@progbits,_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE,comdat
	.align 2
	.weak	_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE
	.type	_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE, @function
_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE:
.LFB4772:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	cmpb	$0, 24(%rdi)
	je	.L644
	movb	$0, 24(%rdi)
	movsd	16(%rdi), %xmm1
	jmp	.L641
.L648:
	xorps	%xmm0, %xmm0
	ucomisd	%xmm0, %xmm2
	jp	.L643
	jne	.L643
.L644:
	movq	%r12, %rdi
	call	_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_
	movq	%r12, %rdi
	addsd	%xmm0, %xmm0
	subsd	.LC3(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)
	call	_ZSt18generate_canonicalIdLm53ESt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEET_RT1_
	movsd	8(%rsp), %xmm2
	addsd	%xmm0, %xmm0
	mulsd	%xmm2, %xmm2
	movaps	%xmm0, %xmm1
	subsd	.LC3(%rip), %xmm1
	movaps	%xmm1, %xmm0
	mulsd	%xmm1, %xmm0
	addsd	%xmm0, %xmm2
	comisd	.LC3(%rip), %xmm2
	ja	.L644
	jmp	.L648
.L643:
	movaps	%xmm2, %xmm0
	movsd	%xmm1, 24(%rsp)
	movsd	%xmm2, 16(%rsp)
	call	log@PLT
	mulsd	.LC49(%rip), %xmm0
	movsd	16(%rsp), %xmm2
	divsd	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	8(%rsp), %xmm2
	movsd	24(%rsp), %xmm1
	movb	$1, 24(%rbx)
	mulsd	%xmm0, %xmm2
	mulsd	%xmm0, %xmm1
	movsd	%xmm2, 16(%rbx)
.L641:
	mulsd	8(%rbp), %xmm1
	addsd	0(%rbp), %xmm1
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	movaps	%xmm1, %xmm0
	ret
	.cfi_endproc
.LFE4772:
	.size	_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE, .-_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE
	.text
	.globl	_Z5randnii
	.type	_Z5randnii, @function
_Z5randnii:
.LFB4189:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4189
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	_ZL6normal(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movslq	%esi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movl	%r12d, %esi
	movq	%rdi, %rbp
	movq	%r12, %r14
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movl	%edx, %ebx
	pushq	%rcx
	.cfi_def_cfa_offset 64
.LEHB113:
	call	_ZN6matrixC1Eii
.LEHE113:
	movslq	%ebx, %rax
	imull	%r14d, %ebx
	xorl	%r14d, %r14d
	imulq	%rax, %r12
	salq	$3, %r12
	movq	%r12, %rdi
	call	malloc@PLT
	movq	%rax, %r13
.L650:
	cmpl	%r14d, %ebx
	jle	.L657
	movq	%r15, %rdx
	leaq	_ZL2mt(%rip), %rsi
	movq	%r15, %rdi
	call	_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE
	movsd	%xmm0, 0(%r13,%r14,8)
	incq	%r14
	jmp	.L650
.L657:
	movq	8(%rbp), %rdi
	movl	$1, %ecx
	movq	%r12, %rdx
	movq	%r13, %rsi
.LEHB114:
	call	cudaMemcpy@PLT
.LEHE114:
	movq	%r13, %rdi
	call	free@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%rbp, %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
.L653:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbx
.L652:
	movq	%rbp, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB115:
	call	_Unwind_Resume@PLT
.LEHE115:
	.cfi_endproc
.LFE4189:
	.section	.gcc_except_table
.LLSDA4189:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4189-.LLSDACSB4189
.LLSDACSB4189:
	.uleb128 .LEHB113-.LFB4189
	.uleb128 .LEHE113-.LEHB113
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB114-.LFB4189
	.uleb128 .LEHE114-.LEHB114
	.uleb128 .L653-.LFB4189
	.uleb128 0
	.uleb128 .LEHB115-.LFB4189
	.uleb128 .LEHE115-.LEHB115
	.uleb128 0
	.uleb128 0
.LLSDACSE4189:
	.text
	.size	_Z5randnii, .-_Z5randnii
	.globl	_Z5randni
	.type	_Z5randni, @function
_Z5randni:
.LFB4190:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4190
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movslq	%esi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movl	%ebp, %esi
	movq	%rbp, %rbx
	imulq	%rbp, %rbp
	pushq	%rcx
	.cfi_def_cfa_offset 64
	imull	%ebx, %ebx
.LEHB116:
	call	_ZN6matrixC1Ei
.LEHE116:
	salq	$3, %rbp
	movq	%rbp, %rdi
	movslq	%ebx, %rbx
	call	malloc@PLT
	leaq	(%rax,%rbx,8), %r15
	movq	%rax, %r13
	movq	%rax, %r14
	leaq	_ZL6normal(%rip), %rbx
.L659:
	cmpq	%r15, %r14
	je	.L666
	movq	%rbx, %rdx
	leaq	_ZL2mt(%rip), %rsi
	movq	%rbx, %rdi
	addq	$8, %r14
	call	_ZNSt19normal_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_RKNS0_10param_typeE
	movsd	%xmm0, -8(%r14)
	jmp	.L659
.L666:
	movq	8(%r12), %rdi
	movl	$1, %ecx
	movq	%rbp, %rdx
	movq	%r13, %rsi
.LEHB117:
	call	cudaMemcpy@PLT
.LEHE117:
	movq	%r13, %rdi
	call	free@PLT
	popq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%r12, %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
.L662:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbx
.L661:
	movq	%r12, %rdi
	call	_ZN6matrixD1Ev
	movq	%rbx, %rdi
.LEHB118:
	call	_Unwind_Resume@PLT
.LEHE118:
	.cfi_endproc
.LFE4190:
	.section	.gcc_except_table
.LLSDA4190:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4190-.LLSDACSB4190
.LLSDACSB4190:
	.uleb128 .LEHB116-.LFB4190
	.uleb128 .LEHE116-.LEHB116
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB117-.LFB4190
	.uleb128 .LEHE117-.LEHB117
	.uleb128 .L662-.LFB4190
	.uleb128 0
	.uleb128 .LEHB118-.LFB4190
	.uleb128 .LEHE118-.LEHB118
	.uleb128 0
	.uleb128 0
.LLSDACSE4190:
	.text
	.size	_Z5randni, .-_Z5randni
	.section	.text.startup
	.type	_GLOBAL__sub_I__ZN6matrixC2Ev, @function
_GLOBAL__sub_I__ZN6matrixC2Ev:
.LFB4975:
	.cfi_startproc
	endbr64
	pushq	%rdx
	.cfi_def_cfa_offset 16
	xorl	%edi, %edi
	call	time@PLT
	leaq	-8+_ZL2mt(%rip), %rdi
	movl	$1, %edx
	movl	%eax, %eax
	leaq	8(%rdi), %rcx
	movq	%rax, _ZL2mt(%rip)
.L668:
	movq	(%rdi,%rdx,8), %rax
	movq	%rax, %rsi
	shrq	$30, %rsi
	xorq	%rsi, %rax
	imulq	$1812433253, %rax, %rax
	addl	%edx, %eax
	movq	%rax, (%rcx,%rdx,8)
	incq	%rdx
	cmpq	$624, %rdx
	jne	.L668
	movq	.LC3(%rip), %rax
	movq	$624, 4992+_ZL2mt(%rip)
	movq	$0x000000000, _ZL6normal(%rip)
	movq	%rax, 8+_ZL6normal(%rip)
	movq	$0x000000000, 16+_ZL6normal(%rip)
	movb	$0, 24+_ZL6normal(%rip)
	popq	%rax
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4975:
	.size	_GLOBAL__sub_I__ZN6matrixC2Ev, .-_GLOBAL__sub_I__ZN6matrixC2Ev
	.section	.init_array
	.align 8
	.quad	_GLOBAL__sub_I__ZN6matrixC2Ev
	.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	_ZL6normal
	.comm	_ZL6normal,32,32
	.local	_ZL2mt
	.comm	_ZL2mt,5000,32
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC1:
	.long	0
	.long	-2147483648
	.long	0
	.long	0
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC3:
	.long	0
	.long	1072693248
	.align 8
.LC46:
	.long	-1
	.long	1072693247
	.section	.rodata.cst4,"aM",@progbits,4
	.align 4
.LC47:
	.long	1333788672
	.section	.rodata.cst8
	.align 8
.LC49:
	.long	0
	.long	-1073741824
	.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:

#ifndef MATRIX_H
#define MATRIX_H
#include <cmath>
#include <cstdlib>
#include <cstdio>
typedef double real;
class matrix
{
public:
	matrix();
	matrix(int n);
	matrix(int m, int n);
	matrix(const matrix& a);
	int row_num();
	int column_num();
	matrix transpose();
	matrix& operator=(const matrix& a);
	matrix row(int k);
	matrix row(int h, int k);
	matrix column(int k);
	matrix column(int h, int k);
	void set(int k, real y);
	void set(int k, int h, real y);
	real operator()(int k);
	real operator()(int k, int h);
	friend matrix operator+(matrix &a, matrix &b);
	friend matrix operator+(matrix &a, real b);
	friend matrix operator-(matrix &a, matrix &b);
	friend matrix operator-(matrix &a, real b);
	friend matrix operator*(matrix &a, matrix &b);
	friend matrix operator*(matrix &a, real b);
	friend matrix operator*(real a, matrix &b);
	friend matrix operator/(matrix &a, real b);

	void operator+=(matrix &a);
	void operator+=(real a);
	void operator-=(matrix &a);
	void operator-=(real a);

	void operator*=(matrix &a);
	void operator*=(real a);
	void operator/=(matrix& a);
	void operator/=(real a);
	void mask(real x);

	friend void mul(matrix &a, matrix &b, matrix& res);
	friend void mul(matrix &a, real &b, matrix& res);
	friend void transposed_mul(matrix& a, matrix& b, matrix& res);

	friend matrix operator>(matrix &a, real b);
	friend matrix operator>(matrix &a, matrix &b);
	friend matrix operator>=(matrix &a, real b);
	friend matrix operator>=(matrix &a, matrix &b);
	friend matrix operator==(matrix &a, real b);
	friend matrix operator==(matrix &a, matrix &b);

	friend matrix max(real a, matrix& b);
	friend matrix max(matrix& a, real b);
	friend matrix max(matrix& a, matrix& b);
	friend int size(matrix &a, int d);
	friend matrix size(matrix& a);

	friend matrix sum(matrix& a);
	friend real norm2(matrix& a);
	friend real sum_all(matrix& a);
	friend matrix mean(matrix& a);
	friend matrix zeros(int n);
	friend matrix zeros(matrix& a);
	friend matrix zeros(int m, int n);
	friend matrix ones(int n);
	friend matrix ones(matrix& a);
	friend matrix ones(int m, int n);
	friend matrix sqrt(matrix& a);
	friend matrix dot_mul(matrix& a, matrix& b);
	friend matrix transposed_mul (matrix& a, matrix& b);
	friend matrix dot_div(matrix& a, matrix& b);

	friend real get_dx(matrix& dx,matrix& X,matrix &y);
	friend void get_dW(matrix& dW, matrix& dx, matrix& Y);
	friend void update_dX1(matrix& W, matrix& dx, matrix& Y);
	friend void update_dX2(matrix& dx, matrix& gamma, matrix& sigma);

	void print();
	void foutput(FILE* f);
	void fload(FILE* f);
	friend matrix randn(int m, int n);
	friend matrix randn(int n);
	~matrix();
protected:
	int m, n;
	real* data = NULL;
	real get(int k);
	real get(int k, int h);
};
#endif
	.text
	.file	"matrix.hip"
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.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_

	.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
