//
// Generated by NVIDIA NVVM Compiler
//
// Compiler Build ID: CL-19856038
// Cuda compilation tools, release 7.5, V7.5.17
// Based on LLVM 3.4svn
//

.version 4.3
.target sm_20
.address_size 64

	// .globl	_Z20calculateGlobalIndexv

.visible .func  (.param .b64 func_retval0) _Z20calculateGlobalIndexv(

)
{
	.reg .b32 	%r<11>;
	.reg .b64 	%rd<4>;


	mov.u32 	%r1, %ctaid.x;
	mov.u32 	%r2, %ctaid.y;
	mov.u32 	%r3, %nctaid.x;
	mad.lo.s32 	%r4, %r3, %r2, %r1;
	mov.u32 	%r5, %tid.x;
	mov.u32 	%r6, %ntid.x;
	mov.u32 	%r7, %tid.y;
	mad.lo.s32 	%r8, %r7, %r6, %r5;
	cvt.u64.u32	%rd1, %r8;
	mov.u32 	%r9, %ntid.y;
	mul.lo.s32 	%r10, %r9, %r6;
	mul.wide.u32 	%rd2, %r10, %r4;
	add.s64 	%rd3, %rd2, %rd1;
	st.param.b64	[func_retval0+0], %rd3;
	ret;
}

	// .globl	_Z12doIterationsdddj
.visible .func  (.param .b64 func_retval0) _Z12doIterationsdddj(
	.param .b64 _Z12doIterationsdddj_param_0,
	.param .b64 _Z12doIterationsdddj_param_1,
	.param .b64 _Z12doIterationsdddj_param_2,
	.param .b32 _Z12doIterationsdddj_param_3
)
{
	.reg .pred 	%p<26>;
	.reg .b32 	%r<81>;
	.reg .f64 	%fd<203>;


	ld.param.f64 	%fd39, [_Z12doIterationsdddj_param_0];
	ld.param.f64 	%fd40, [_Z12doIterationsdddj_param_1];
	ld.param.f64 	%fd42, [_Z12doIterationsdddj_param_2];
	ld.param.u32 	%r33, [_Z12doIterationsdddj_param_3];
	mul.f64 	%fd1, %fd42, %fd42;
	mul.f64 	%fd191, %fd40, %fd40;
	mul.f64 	%fd192, %fd39, %fd39;
	add.f64 	%fd195, %fd192, %fd191;
	setp.gtu.f64	%p1, %fd195, %fd1;
	mov.u32 	%r68, 0;
	mov.f64 	%fd196, 0d3FF0000000000000;
	@%p1 bra 	BB1_4;

	mov.f64 	%fd193, %fd40;
	mov.f64 	%fd194, %fd39;

BB1_2:
	mov.f64 	%fd8, %fd194;
	mov.f64 	%fd7, %fd193;
	sub.f64 	%fd43, %fd192, %fd191;
	add.f64 	%fd9, %fd43, %fd39;
	add.f64 	%fd44, %fd8, %fd8;
	fma.rn.f64 	%fd10, %fd44, %fd7, %fd40;
	add.s32 	%r68, %r68, 1;
	setp.gt.u32	%p2, %r68, %r33;
	mul.f64 	%fd192, %fd9, %fd9;
	mul.f64 	%fd191, %fd10, %fd10;
	add.f64 	%fd195, %fd192, %fd191;
	setp.gtu.f64	%p3, %fd195, %fd1;
	or.pred  	%p4, %p2, %p3;
	mov.f64 	%fd193, %fd10;
	mov.f64 	%fd194, %fd9;
	@!%p4 bra 	BB1_2;
	bra.uni 	BB1_3;

BB1_3:
	cvt.rn.f64.u32	%fd45, %r68;
	add.f64 	%fd196, %fd45, 0d3FF0000000000000;

BB1_4:
	mov.f64 	%fd46, 0d4000000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r69}, %fd46;
	}
	setp.lt.s32	%p5, %r69, 2146435072;
	@%p5 bra 	BB1_6;
	bra.uni 	BB1_5;

BB1_6:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r70, %temp}, %fd46;
	}
	mov.u32 	%r71, -1023;
	setp.gt.s32	%p7, %r69, 1048575;
	@%p7 bra 	BB1_8;

	mov.f64 	%fd50, 0d4360000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r69}, %fd50;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r70, %temp}, %fd50;
	}
	mov.u32 	%r71, -1077;

BB1_8:
	shr.u32 	%r37, %r69, 20;
	add.s32 	%r72, %r71, %r37;
	and.b32  	%r38, %r69, -2146435073;
	or.b32  	%r39, %r38, 1072693248;
	mov.b64 	%fd197, {%r70, %r39};
	setp.lt.s32	%p8, %r39, 1073127583;
	@%p8 bra 	BB1_10;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r40, %temp}, %fd197;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r41}, %fd197;
	}
	add.s32 	%r42, %r41, -1048576;
	mov.b64 	%fd197, {%r40, %r42};
	add.s32 	%r72, %r72, 1;

BB1_10:
	add.f64 	%fd52, %fd197, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd51,%fd52;
	// inline asm
	neg.f64 	%fd53, %fd52;
	mov.f64 	%fd54, 0d3FF0000000000000;
	fma.rn.f64 	%fd55, %fd53, %fd51, %fd54;
	fma.rn.f64 	%fd56, %fd55, %fd55, %fd55;
	fma.rn.f64 	%fd57, %fd56, %fd51, %fd51;
	add.f64 	%fd58, %fd197, 0dBFF0000000000000;
	mul.f64 	%fd59, %fd58, %fd57;
	fma.rn.f64 	%fd60, %fd58, %fd57, %fd59;
	mul.f64 	%fd61, %fd60, %fd60;
	mov.f64 	%fd62, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd63, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd64, %fd63, %fd61, %fd62;
	mov.f64 	%fd65, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd66, %fd64, %fd61, %fd65;
	mov.f64 	%fd67, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd68, %fd66, %fd61, %fd67;
	mov.f64 	%fd69, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd70, %fd68, %fd61, %fd69;
	mov.f64 	%fd71, 0d3F624924923BE72D;
	fma.rn.f64 	%fd72, %fd70, %fd61, %fd71;
	mov.f64 	%fd73, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd74, %fd72, %fd61, %fd73;
	mov.f64 	%fd75, 0d3FB5555555555554;
	fma.rn.f64 	%fd76, %fd74, %fd61, %fd75;
	sub.f64 	%fd77, %fd58, %fd60;
	add.f64 	%fd78, %fd77, %fd77;
	neg.f64 	%fd79, %fd60;
	fma.rn.f64 	%fd80, %fd79, %fd58, %fd78;
	mul.f64 	%fd81, %fd57, %fd80;
	mul.f64 	%fd82, %fd61, %fd76;
	fma.rn.f64 	%fd83, %fd82, %fd60, %fd81;
	xor.b32  	%r43, %r72, -2147483648;
	mov.u32 	%r44, 1127219200;
	mov.b64 	%fd84, {%r43, %r44};
	mov.u32 	%r45, -2147483648;
	mov.b64 	%fd85, {%r45, %r44};
	sub.f64 	%fd86, %fd84, %fd85;
	mov.f64 	%fd87, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd88, %fd86, %fd87, %fd60;
	neg.f64 	%fd89, %fd86;
	fma.rn.f64 	%fd90, %fd89, %fd87, %fd88;
	sub.f64 	%fd91, %fd90, %fd60;
	sub.f64 	%fd92, %fd83, %fd91;
	mov.f64 	%fd93, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd94, %fd86, %fd93, %fd92;
	add.f64 	%fd198, %fd88, %fd94;
	bra.uni 	BB1_11;

BB1_5:
	abs.f64 	%fd48, %fd46;
	setp.gtu.f64	%p6, %fd48, 0d7FF0000000000000;
	selp.f64	%fd198, 0d4010000000000000, 0dFFF8000000000000, %p6;

BB1_11:
	setp.lt.f64	%p9, %fd195, %fd1;
	selp.f64	%fd23, %fd1, %fd195, %p9;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r73}, %fd23;
	}
	setp.gt.f64	%p10, %fd23, 0d0000000000000000;
	setp.lt.s32	%p11, %r73, 2146435072;
	and.pred  	%p12, %p10, %p11;
	@%p12 bra 	BB1_16;
	bra.uni 	BB1_12;

BB1_16:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r74, %temp}, %fd23;
	}
	mov.u32 	%r75, -1023;
	setp.gt.s32	%p16, %r73, 1048575;
	@%p16 bra 	BB1_18;

	mul.f64 	%fd97, %fd23, 0d4350000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r73}, %fd97;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r74, %temp}, %fd97;
	}
	mov.u32 	%r75, -1077;

BB1_18:
	shr.u32 	%r48, %r73, 20;
	add.s32 	%r76, %r75, %r48;
	and.b32  	%r49, %r73, -2146435073;
	or.b32  	%r50, %r49, 1072693248;
	mov.b64 	%fd199, {%r74, %r50};
	setp.lt.s32	%p17, %r50, 1073127583;
	@%p17 bra 	BB1_20;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r51, %temp}, %fd199;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r52}, %fd199;
	}
	add.s32 	%r53, %r52, -1048576;
	mov.b64 	%fd199, {%r51, %r53};
	add.s32 	%r76, %r76, 1;

BB1_20:
	add.f64 	%fd99, %fd199, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd98,%fd99;
	// inline asm
	neg.f64 	%fd100, %fd99;
	mov.f64 	%fd101, 0d3FF0000000000000;
	fma.rn.f64 	%fd102, %fd100, %fd98, %fd101;
	fma.rn.f64 	%fd103, %fd102, %fd102, %fd102;
	fma.rn.f64 	%fd104, %fd103, %fd98, %fd98;
	add.f64 	%fd105, %fd199, 0dBFF0000000000000;
	mul.f64 	%fd106, %fd105, %fd104;
	fma.rn.f64 	%fd107, %fd105, %fd104, %fd106;
	mul.f64 	%fd108, %fd107, %fd107;
	mov.f64 	%fd109, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd110, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd111, %fd110, %fd108, %fd109;
	mov.f64 	%fd112, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd113, %fd111, %fd108, %fd112;
	mov.f64 	%fd114, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd115, %fd113, %fd108, %fd114;
	mov.f64 	%fd116, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd117, %fd115, %fd108, %fd116;
	mov.f64 	%fd118, 0d3F624924923BE72D;
	fma.rn.f64 	%fd119, %fd117, %fd108, %fd118;
	mov.f64 	%fd120, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd121, %fd119, %fd108, %fd120;
	mov.f64 	%fd122, 0d3FB5555555555554;
	fma.rn.f64 	%fd123, %fd121, %fd108, %fd122;
	sub.f64 	%fd124, %fd105, %fd107;
	add.f64 	%fd125, %fd124, %fd124;
	neg.f64 	%fd126, %fd107;
	fma.rn.f64 	%fd127, %fd126, %fd105, %fd125;
	mul.f64 	%fd128, %fd104, %fd127;
	mul.f64 	%fd129, %fd108, %fd123;
	fma.rn.f64 	%fd130, %fd129, %fd107, %fd128;
	xor.b32  	%r54, %r76, -2147483648;
	mov.u32 	%r55, 1127219200;
	mov.b64 	%fd131, {%r54, %r55};
	mov.u32 	%r56, -2147483648;
	mov.b64 	%fd132, {%r56, %r55};
	sub.f64 	%fd133, %fd131, %fd132;
	mov.f64 	%fd134, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd135, %fd133, %fd134, %fd107;
	neg.f64 	%fd136, %fd133;
	fma.rn.f64 	%fd137, %fd136, %fd134, %fd135;
	sub.f64 	%fd138, %fd137, %fd107;
	sub.f64 	%fd139, %fd130, %fd138;
	mov.f64 	%fd140, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd141, %fd133, %fd140, %fd139;
	add.f64 	%fd200, %fd135, %fd141;
	bra.uni 	BB1_21;

BB1_12:
	abs.f64 	%fd95, %fd23;
	setp.gtu.f64	%p13, %fd95, 0d7FF0000000000000;
	@%p13 bra 	BB1_15;
	bra.uni 	BB1_13;

BB1_15:
	add.f64 	%fd200, %fd23, %fd23;
	bra.uni 	BB1_21;

BB1_13:
	setp.eq.f64	%p14, %fd23, 0d0000000000000000;
	mov.f64 	%fd200, 0dFFF0000000000000;
	@%p14 bra 	BB1_21;

	setp.eq.f64	%p15, %fd23, 0d7FF0000000000000;
	selp.f64	%fd200, %fd23, 0dFFF8000000000000, %p15;

BB1_21:
	mul.f64 	%fd31, %fd200, 0d3FE0000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r77}, %fd31;
	}
	setp.gt.f64	%p18, %fd31, 0d0000000000000000;
	setp.lt.s32	%p19, %r77, 2146435072;
	and.pred  	%p20, %p18, %p19;
	@%p20 bra 	BB1_26;
	bra.uni 	BB1_22;

BB1_26:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r78, %temp}, %fd31;
	}
	mov.u32 	%r79, -1023;
	setp.gt.s32	%p24, %r77, 1048575;
	@%p24 bra 	BB1_28;

	mul.f64 	%fd144, %fd31, 0d4350000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r77}, %fd144;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r78, %temp}, %fd144;
	}
	mov.u32 	%r79, -1077;

BB1_28:
	shr.u32 	%r59, %r77, 20;
	add.s32 	%r80, %r79, %r59;
	and.b32  	%r60, %r77, -2146435073;
	or.b32  	%r61, %r60, 1072693248;
	mov.b64 	%fd201, {%r78, %r61};
	setp.lt.s32	%p25, %r61, 1073127583;
	@%p25 bra 	BB1_30;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r62, %temp}, %fd201;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r63}, %fd201;
	}
	add.s32 	%r64, %r63, -1048576;
	mov.b64 	%fd201, {%r62, %r64};
	add.s32 	%r80, %r80, 1;

BB1_30:
	add.f64 	%fd146, %fd201, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd145,%fd146;
	// inline asm
	neg.f64 	%fd147, %fd146;
	mov.f64 	%fd148, 0d3FF0000000000000;
	fma.rn.f64 	%fd149, %fd147, %fd145, %fd148;
	fma.rn.f64 	%fd150, %fd149, %fd149, %fd149;
	fma.rn.f64 	%fd151, %fd150, %fd145, %fd145;
	add.f64 	%fd152, %fd201, 0dBFF0000000000000;
	mul.f64 	%fd153, %fd152, %fd151;
	fma.rn.f64 	%fd154, %fd152, %fd151, %fd153;
	mul.f64 	%fd155, %fd154, %fd154;
	mov.f64 	%fd156, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd157, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd158, %fd157, %fd155, %fd156;
	mov.f64 	%fd159, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd160, %fd158, %fd155, %fd159;
	mov.f64 	%fd161, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd162, %fd160, %fd155, %fd161;
	mov.f64 	%fd163, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd164, %fd162, %fd155, %fd163;
	mov.f64 	%fd165, 0d3F624924923BE72D;
	fma.rn.f64 	%fd166, %fd164, %fd155, %fd165;
	mov.f64 	%fd167, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd168, %fd166, %fd155, %fd167;
	mov.f64 	%fd169, 0d3FB5555555555554;
	fma.rn.f64 	%fd170, %fd168, %fd155, %fd169;
	sub.f64 	%fd171, %fd152, %fd154;
	add.f64 	%fd172, %fd171, %fd171;
	neg.f64 	%fd173, %fd154;
	fma.rn.f64 	%fd174, %fd173, %fd152, %fd172;
	mul.f64 	%fd175, %fd151, %fd174;
	mul.f64 	%fd176, %fd155, %fd170;
	fma.rn.f64 	%fd177, %fd176, %fd154, %fd175;
	xor.b32  	%r65, %r80, -2147483648;
	mov.u32 	%r66, 1127219200;
	mov.b64 	%fd178, {%r65, %r66};
	mov.u32 	%r67, -2147483648;
	mov.b64 	%fd179, {%r67, %r66};
	sub.f64 	%fd180, %fd178, %fd179;
	mov.f64 	%fd181, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd182, %fd180, %fd181, %fd154;
	neg.f64 	%fd183, %fd180;
	fma.rn.f64 	%fd184, %fd183, %fd181, %fd182;
	sub.f64 	%fd185, %fd184, %fd154;
	sub.f64 	%fd186, %fd177, %fd185;
	mov.f64 	%fd187, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd188, %fd180, %fd187, %fd186;
	add.f64 	%fd202, %fd182, %fd188;
	bra.uni 	BB1_31;

BB1_22:
	abs.f64 	%fd142, %fd31;
	setp.gtu.f64	%p21, %fd142, 0d7FF0000000000000;
	@%p21 bra 	BB1_25;
	bra.uni 	BB1_23;

BB1_25:
	add.f64 	%fd202, %fd31, %fd31;
	bra.uni 	BB1_31;

BB1_23:
	setp.eq.f64	%p22, %fd31, 0d0000000000000000;
	mov.f64 	%fd202, 0dFFF0000000000000;
	@%p22 bra 	BB1_31;

	setp.eq.f64	%p23, %fd31, 0d7FF0000000000000;
	selp.f64	%fd202, %fd31, 0dFFF8000000000000, %p23;

BB1_31:
	div.rn.f64 	%fd189, %fd202, %fd198;
	sub.f64 	%fd190, %fd196, %fd189;
	st.param.f64	[func_retval0+0], %fd190;
	ret;
}

	// .globl	_Z24processMandelbrotElementPdPKdS1_djj
.visible .entry _Z24processMandelbrotElementPdPKdS1_djj(
	.param .u64 _Z24processMandelbrotElementPdPKdS1_djj_param_0,
	.param .u64 _Z24processMandelbrotElementPdPKdS1_djj_param_1,
	.param .u64 _Z24processMandelbrotElementPdPKdS1_djj_param_2,
	.param .f64 _Z24processMandelbrotElementPdPKdS1_djj_param_3,
	.param .u32 _Z24processMandelbrotElementPdPKdS1_djj_param_4,
	.param .u32 _Z24processMandelbrotElementPdPKdS1_djj_param_5
)
{
	.reg .pred 	%p<35>;
	.reg .b32 	%r<116>;
	.reg .f64 	%fd<259>;
	.reg .b64 	%rd<16>;


	ld.param.u64 	%rd2, [_Z24processMandelbrotElementPdPKdS1_djj_param_0];
	ld.param.u64 	%rd3, [_Z24processMandelbrotElementPdPKdS1_djj_param_1];
	ld.param.u64 	%rd4, [_Z24processMandelbrotElementPdPKdS1_djj_param_2];
	ld.param.f64 	%fd49, [_Z24processMandelbrotElementPdPKdS1_djj_param_3];
	ld.param.u32 	%r43, [_Z24processMandelbrotElementPdPKdS1_djj_param_4];
	mov.u32 	%r44, %ctaid.x;
	mov.u32 	%r45, %nctaid.x;
	mov.u32 	%r46, %ctaid.y;
	mad.lo.s32 	%r47, %r45, %r46, %r44;
	mov.u32 	%r48, %tid.y;
	mov.u32 	%r49, %ntid.x;
	mov.u32 	%r50, %tid.x;
	mad.lo.s32 	%r51, %r48, %r49, %r50;
	cvt.u64.u32	%rd5, %r51;
	mov.u32 	%r52, %ntid.y;
	mul.lo.s32 	%r53, %r52, %r49;
	mul.wide.u32 	%rd6, %r53, %r47;
	add.s64 	%rd1, %rd6, %rd5;
	ld.param.u32 	%rd7, [_Z24processMandelbrotElementPdPKdS1_djj_param_5];
	setp.ge.u64	%p1, %rd1, %rd7;
	@%p1 bra 	BB2_43;

	cvta.to.global.u64 	%rd8, %rd3;
	shl.b64 	%rd9, %rd1, 3;
	add.s64 	%rd10, %rd8, %rd9;
	cvta.to.global.u64 	%rd11, %rd4;
	add.s64 	%rd12, %rd11, %rd9;
	ld.global.f64 	%fd1, [%rd10];
	mul.f64 	%fd246, %fd1, %fd1;
	ld.global.f64 	%fd3, [%rd12];
	mul.f64 	%fd245, %fd3, %fd3;
	add.f64 	%fd249, %fd246, %fd245;
	mul.f64 	%fd6, %fd49, %fd49;
	setp.gtu.f64	%p2, %fd249, %fd6;
	mov.u32 	%r99, 0;
	mov.f64 	%fd250, 0d3FF0000000000000;
	@%p2 bra 	BB2_5;

	mov.f64 	%fd247, %fd3;
	mov.f64 	%fd248, %fd1;

BB2_3:
	mov.f64 	%fd10, %fd248;
	mov.f64 	%fd9, %fd247;
	sub.f64 	%fd51, %fd246, %fd245;
	add.f64 	%fd11, %fd1, %fd51;
	add.f64 	%fd52, %fd10, %fd10;
	fma.rn.f64 	%fd12, %fd9, %fd52, %fd3;
	add.s32 	%r99, %r99, 1;
	setp.gt.u32	%p3, %r99, %r43;
	mul.f64 	%fd246, %fd11, %fd11;
	mul.f64 	%fd245, %fd12, %fd12;
	add.f64 	%fd249, %fd246, %fd245;
	setp.gtu.f64	%p4, %fd249, %fd6;
	or.pred  	%p5, %p3, %p4;
	mov.f64 	%fd247, %fd12;
	mov.f64 	%fd248, %fd11;
	@!%p5 bra 	BB2_3;
	bra.uni 	BB2_4;

BB2_4:
	cvt.rn.f64.u32	%fd53, %r99;
	add.f64 	%fd250, %fd53, 0d3FF0000000000000;

BB2_5:
	mov.f64 	%fd54, 0d4000000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r100}, %fd54;
	}
	setp.lt.s32	%p6, %r100, 2146435072;
	@%p6 bra 	BB2_7;
	bra.uni 	BB2_6;

BB2_7:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r101, %temp}, %fd54;
	}
	mov.u32 	%r102, -1023;
	setp.gt.s32	%p8, %r100, 1048575;
	@%p8 bra 	BB2_9;

	mov.f64 	%fd58, 0d4360000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r100}, %fd58;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r101, %temp}, %fd58;
	}
	mov.u32 	%r102, -1077;

BB2_9:
	shr.u32 	%r57, %r100, 20;
	add.s32 	%r103, %r102, %r57;
	and.b32  	%r58, %r100, -2146435073;
	or.b32  	%r59, %r58, 1072693248;
	mov.b64 	%fd251, {%r101, %r59};
	setp.lt.s32	%p9, %r59, 1073127583;
	@%p9 bra 	BB2_11;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r60, %temp}, %fd251;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r61}, %fd251;
	}
	add.s32 	%r62, %r61, -1048576;
	mov.b64 	%fd251, {%r60, %r62};
	add.s32 	%r103, %r103, 1;

BB2_11:
	add.f64 	%fd60, %fd251, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd59,%fd60;
	// inline asm
	neg.f64 	%fd61, %fd60;
	mov.f64 	%fd62, 0d3FF0000000000000;
	fma.rn.f64 	%fd63, %fd61, %fd59, %fd62;
	fma.rn.f64 	%fd64, %fd63, %fd63, %fd63;
	fma.rn.f64 	%fd65, %fd64, %fd59, %fd59;
	add.f64 	%fd66, %fd251, 0dBFF0000000000000;
	mul.f64 	%fd67, %fd66, %fd65;
	fma.rn.f64 	%fd68, %fd66, %fd65, %fd67;
	mul.f64 	%fd69, %fd68, %fd68;
	mov.f64 	%fd70, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd71, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd72, %fd71, %fd69, %fd70;
	mov.f64 	%fd73, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd74, %fd72, %fd69, %fd73;
	mov.f64 	%fd75, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd76, %fd74, %fd69, %fd75;
	mov.f64 	%fd77, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd78, %fd76, %fd69, %fd77;
	mov.f64 	%fd79, 0d3F624924923BE72D;
	fma.rn.f64 	%fd80, %fd78, %fd69, %fd79;
	mov.f64 	%fd81, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd82, %fd80, %fd69, %fd81;
	mov.f64 	%fd83, 0d3FB5555555555554;
	fma.rn.f64 	%fd84, %fd82, %fd69, %fd83;
	sub.f64 	%fd85, %fd66, %fd68;
	add.f64 	%fd86, %fd85, %fd85;
	neg.f64 	%fd87, %fd68;
	fma.rn.f64 	%fd88, %fd87, %fd66, %fd86;
	mul.f64 	%fd89, %fd65, %fd88;
	mul.f64 	%fd90, %fd69, %fd84;
	fma.rn.f64 	%fd91, %fd90, %fd68, %fd89;
	xor.b32  	%r63, %r103, -2147483648;
	mov.u32 	%r64, 1127219200;
	mov.b64 	%fd92, {%r63, %r64};
	mov.u32 	%r65, -2147483648;
	mov.b64 	%fd93, {%r65, %r64};
	sub.f64 	%fd94, %fd92, %fd93;
	mov.f64 	%fd95, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd96, %fd94, %fd95, %fd68;
	neg.f64 	%fd97, %fd94;
	fma.rn.f64 	%fd98, %fd97, %fd95, %fd96;
	sub.f64 	%fd99, %fd98, %fd68;
	sub.f64 	%fd100, %fd91, %fd99;
	mov.f64 	%fd101, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd102, %fd94, %fd101, %fd100;
	add.f64 	%fd252, %fd96, %fd102;
	bra.uni 	BB2_12;

BB2_6:
	abs.f64 	%fd56, %fd54;
	setp.gtu.f64	%p7, %fd56, 0d7FF0000000000000;
	selp.f64	%fd252, 0d4010000000000000, 0dFFF8000000000000, %p7;

BB2_12:
	setp.lt.f64	%p10, %fd249, %fd6;
	selp.f64	%fd25, %fd6, %fd249, %p10;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r104}, %fd25;
	}
	setp.gt.f64	%p11, %fd25, 0d0000000000000000;
	setp.lt.s32	%p12, %r104, 2146435072;
	and.pred  	%p13, %p11, %p12;
	@%p13 bra 	BB2_17;
	bra.uni 	BB2_13;

BB2_17:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r105, %temp}, %fd25;
	}
	mov.u32 	%r106, -1023;
	setp.gt.s32	%p17, %r104, 1048575;
	@%p17 bra 	BB2_19;

	mul.f64 	%fd105, %fd25, 0d4350000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r104}, %fd105;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r105, %temp}, %fd105;
	}
	mov.u32 	%r106, -1077;

BB2_19:
	shr.u32 	%r68, %r104, 20;
	add.s32 	%r107, %r106, %r68;
	and.b32  	%r69, %r104, -2146435073;
	or.b32  	%r70, %r69, 1072693248;
	mov.b64 	%fd253, {%r105, %r70};
	setp.lt.s32	%p18, %r70, 1073127583;
	@%p18 bra 	BB2_21;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r71, %temp}, %fd253;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r72}, %fd253;
	}
	add.s32 	%r73, %r72, -1048576;
	mov.b64 	%fd253, {%r71, %r73};
	add.s32 	%r107, %r107, 1;

BB2_21:
	add.f64 	%fd107, %fd253, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd106,%fd107;
	// inline asm
	neg.f64 	%fd108, %fd107;
	mov.f64 	%fd109, 0d3FF0000000000000;
	fma.rn.f64 	%fd110, %fd108, %fd106, %fd109;
	fma.rn.f64 	%fd111, %fd110, %fd110, %fd110;
	fma.rn.f64 	%fd112, %fd111, %fd106, %fd106;
	add.f64 	%fd113, %fd253, 0dBFF0000000000000;
	mul.f64 	%fd114, %fd113, %fd112;
	fma.rn.f64 	%fd115, %fd113, %fd112, %fd114;
	mul.f64 	%fd116, %fd115, %fd115;
	mov.f64 	%fd117, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd118, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd119, %fd118, %fd116, %fd117;
	mov.f64 	%fd120, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd121, %fd119, %fd116, %fd120;
	mov.f64 	%fd122, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd123, %fd121, %fd116, %fd122;
	mov.f64 	%fd124, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd125, %fd123, %fd116, %fd124;
	mov.f64 	%fd126, 0d3F624924923BE72D;
	fma.rn.f64 	%fd127, %fd125, %fd116, %fd126;
	mov.f64 	%fd128, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd129, %fd127, %fd116, %fd128;
	mov.f64 	%fd130, 0d3FB5555555555554;
	fma.rn.f64 	%fd131, %fd129, %fd116, %fd130;
	sub.f64 	%fd132, %fd113, %fd115;
	add.f64 	%fd133, %fd132, %fd132;
	neg.f64 	%fd134, %fd115;
	fma.rn.f64 	%fd135, %fd134, %fd113, %fd133;
	mul.f64 	%fd136, %fd112, %fd135;
	mul.f64 	%fd137, %fd116, %fd131;
	fma.rn.f64 	%fd138, %fd137, %fd115, %fd136;
	xor.b32  	%r74, %r107, -2147483648;
	mov.u32 	%r75, 1127219200;
	mov.b64 	%fd139, {%r74, %r75};
	mov.u32 	%r76, -2147483648;
	mov.b64 	%fd140, {%r76, %r75};
	sub.f64 	%fd141, %fd139, %fd140;
	mov.f64 	%fd142, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd143, %fd141, %fd142, %fd115;
	neg.f64 	%fd144, %fd141;
	fma.rn.f64 	%fd145, %fd144, %fd142, %fd143;
	sub.f64 	%fd146, %fd145, %fd115;
	sub.f64 	%fd147, %fd138, %fd146;
	mov.f64 	%fd148, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd149, %fd141, %fd148, %fd147;
	add.f64 	%fd254, %fd143, %fd149;
	bra.uni 	BB2_22;

BB2_13:
	abs.f64 	%fd103, %fd25;
	setp.gtu.f64	%p14, %fd103, 0d7FF0000000000000;
	@%p14 bra 	BB2_16;
	bra.uni 	BB2_14;

BB2_16:
	add.f64 	%fd254, %fd25, %fd25;
	bra.uni 	BB2_22;

BB2_14:
	setp.eq.f64	%p15, %fd25, 0d0000000000000000;
	mov.f64 	%fd254, 0dFFF0000000000000;
	@%p15 bra 	BB2_22;

	setp.eq.f64	%p16, %fd25, 0d7FF0000000000000;
	selp.f64	%fd254, %fd25, 0dFFF8000000000000, %p16;

BB2_22:
	mul.f64 	%fd33, %fd254, 0d3FE0000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r108}, %fd33;
	}
	setp.gt.f64	%p19, %fd33, 0d0000000000000000;
	setp.lt.s32	%p20, %r108, 2146435072;
	and.pred  	%p21, %p19, %p20;
	@%p21 bra 	BB2_27;
	bra.uni 	BB2_23;

BB2_27:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r109, %temp}, %fd33;
	}
	mov.u32 	%r110, -1023;
	setp.gt.s32	%p25, %r108, 1048575;
	@%p25 bra 	BB2_29;

	mul.f64 	%fd152, %fd33, 0d4350000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r108}, %fd152;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r109, %temp}, %fd152;
	}
	mov.u32 	%r110, -1077;

BB2_29:
	shr.u32 	%r79, %r108, 20;
	add.s32 	%r111, %r110, %r79;
	and.b32  	%r80, %r108, -2146435073;
	or.b32  	%r81, %r80, 1072693248;
	mov.b64 	%fd255, {%r109, %r81};
	setp.lt.s32	%p26, %r81, 1073127583;
	@%p26 bra 	BB2_31;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r82, %temp}, %fd255;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r83}, %fd255;
	}
	add.s32 	%r84, %r83, -1048576;
	mov.b64 	%fd255, {%r82, %r84};
	add.s32 	%r111, %r111, 1;

BB2_31:
	add.f64 	%fd154, %fd255, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd153,%fd154;
	// inline asm
	neg.f64 	%fd155, %fd154;
	mov.f64 	%fd156, 0d3FF0000000000000;
	fma.rn.f64 	%fd157, %fd155, %fd153, %fd156;
	fma.rn.f64 	%fd158, %fd157, %fd157, %fd157;
	fma.rn.f64 	%fd159, %fd158, %fd153, %fd153;
	add.f64 	%fd160, %fd255, 0dBFF0000000000000;
	mul.f64 	%fd161, %fd160, %fd159;
	fma.rn.f64 	%fd162, %fd160, %fd159, %fd161;
	mul.f64 	%fd163, %fd162, %fd162;
	mov.f64 	%fd164, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd165, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd166, %fd165, %fd163, %fd164;
	mov.f64 	%fd167, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd168, %fd166, %fd163, %fd167;
	mov.f64 	%fd169, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd170, %fd168, %fd163, %fd169;
	mov.f64 	%fd171, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd172, %fd170, %fd163, %fd171;
	mov.f64 	%fd173, 0d3F624924923BE72D;
	fma.rn.f64 	%fd174, %fd172, %fd163, %fd173;
	mov.f64 	%fd175, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd176, %fd174, %fd163, %fd175;
	mov.f64 	%fd177, 0d3FB5555555555554;
	fma.rn.f64 	%fd178, %fd176, %fd163, %fd177;
	sub.f64 	%fd179, %fd160, %fd162;
	add.f64 	%fd180, %fd179, %fd179;
	neg.f64 	%fd181, %fd162;
	fma.rn.f64 	%fd182, %fd181, %fd160, %fd180;
	mul.f64 	%fd183, %fd159, %fd182;
	mul.f64 	%fd184, %fd163, %fd178;
	fma.rn.f64 	%fd185, %fd184, %fd162, %fd183;
	xor.b32  	%r85, %r111, -2147483648;
	mov.u32 	%r86, 1127219200;
	mov.b64 	%fd186, {%r85, %r86};
	mov.u32 	%r87, -2147483648;
	mov.b64 	%fd187, {%r87, %r86};
	sub.f64 	%fd188, %fd186, %fd187;
	mov.f64 	%fd189, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd190, %fd188, %fd189, %fd162;
	neg.f64 	%fd191, %fd188;
	fma.rn.f64 	%fd192, %fd191, %fd189, %fd190;
	sub.f64 	%fd193, %fd192, %fd162;
	sub.f64 	%fd194, %fd185, %fd193;
	mov.f64 	%fd195, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd196, %fd188, %fd195, %fd194;
	add.f64 	%fd256, %fd190, %fd196;
	bra.uni 	BB2_32;

BB2_23:
	abs.f64 	%fd150, %fd33;
	setp.gtu.f64	%p22, %fd150, 0d7FF0000000000000;
	@%p22 bra 	BB2_26;
	bra.uni 	BB2_24;

BB2_26:
	add.f64 	%fd256, %fd33, %fd33;
	bra.uni 	BB2_32;

BB2_24:
	setp.eq.f64	%p23, %fd33, 0d0000000000000000;
	mov.f64 	%fd256, 0dFFF0000000000000;
	@%p23 bra 	BB2_32;

	setp.eq.f64	%p24, %fd33, 0d7FF0000000000000;
	selp.f64	%fd256, %fd33, 0dFFF8000000000000, %p24;

BB2_32:
	div.rn.f64 	%fd197, %fd256, %fd252;
	sub.f64 	%fd41, %fd250, %fd197;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r112}, %fd41;
	}
	setp.gt.f64	%p27, %fd41, 0d0000000000000000;
	setp.lt.s32	%p28, %r112, 2146435072;
	and.pred  	%p29, %p27, %p28;
	@%p29 bra 	BB2_37;
	bra.uni 	BB2_33;

BB2_37:
	{
	.reg .b32 %temp; 
	mov.b64 	{%r113, %temp}, %fd41;
	}
	mov.u32 	%r114, -1023;
	setp.gt.s32	%p33, %r112, 1048575;
	@%p33 bra 	BB2_39;

	mul.f64 	%fd200, %fd41, 0d4350000000000000;
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r112}, %fd200;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%r113, %temp}, %fd200;
	}
	mov.u32 	%r114, -1077;

BB2_39:
	shr.u32 	%r90, %r112, 20;
	add.s32 	%r115, %r114, %r90;
	and.b32  	%r91, %r112, -2146435073;
	or.b32  	%r92, %r91, 1072693248;
	mov.b64 	%fd257, {%r113, %r92};
	setp.lt.s32	%p34, %r92, 1073127583;
	@%p34 bra 	BB2_41;

	{
	.reg .b32 %temp; 
	mov.b64 	{%r93, %temp}, %fd257;
	}
	{
	.reg .b32 %temp; 
	mov.b64 	{%temp, %r94}, %fd257;
	}
	add.s32 	%r95, %r94, -1048576;
	mov.b64 	%fd257, {%r93, %r95};
	add.s32 	%r115, %r115, 1;

BB2_41:
	add.f64 	%fd202, %fd257, 0d3FF0000000000000;
	// inline asm
	rcp.approx.ftz.f64 %fd201,%fd202;
	// inline asm
	neg.f64 	%fd203, %fd202;
	mov.f64 	%fd204, 0d3FF0000000000000;
	fma.rn.f64 	%fd205, %fd203, %fd201, %fd204;
	fma.rn.f64 	%fd206, %fd205, %fd205, %fd205;
	fma.rn.f64 	%fd207, %fd206, %fd201, %fd201;
	add.f64 	%fd208, %fd257, 0dBFF0000000000000;
	mul.f64 	%fd209, %fd208, %fd207;
	fma.rn.f64 	%fd210, %fd208, %fd207, %fd209;
	mul.f64 	%fd211, %fd210, %fd210;
	mov.f64 	%fd212, 0d3ED0EE258B7A8B04;
	mov.f64 	%fd213, 0d3EB1380B3AE80F1E;
	fma.rn.f64 	%fd214, %fd213, %fd211, %fd212;
	mov.f64 	%fd215, 0d3EF3B2669F02676F;
	fma.rn.f64 	%fd216, %fd214, %fd211, %fd215;
	mov.f64 	%fd217, 0d3F1745CBA9AB0956;
	fma.rn.f64 	%fd218, %fd216, %fd211, %fd217;
	mov.f64 	%fd219, 0d3F3C71C72D1B5154;
	fma.rn.f64 	%fd220, %fd218, %fd211, %fd219;
	mov.f64 	%fd221, 0d3F624924923BE72D;
	fma.rn.f64 	%fd222, %fd220, %fd211, %fd221;
	mov.f64 	%fd223, 0d3F8999999999A3C4;
	fma.rn.f64 	%fd224, %fd222, %fd211, %fd223;
	mov.f64 	%fd225, 0d3FB5555555555554;
	fma.rn.f64 	%fd226, %fd224, %fd211, %fd225;
	sub.f64 	%fd227, %fd208, %fd210;
	add.f64 	%fd228, %fd227, %fd227;
	neg.f64 	%fd229, %fd210;
	fma.rn.f64 	%fd230, %fd229, %fd208, %fd228;
	mul.f64 	%fd231, %fd207, %fd230;
	mul.f64 	%fd232, %fd211, %fd226;
	fma.rn.f64 	%fd233, %fd232, %fd210, %fd231;
	xor.b32  	%r96, %r115, -2147483648;
	mov.u32 	%r97, 1127219200;
	mov.b64 	%fd234, {%r96, %r97};
	mov.u32 	%r98, -2147483648;
	mov.b64 	%fd235, {%r98, %r97};
	sub.f64 	%fd236, %fd234, %fd235;
	mov.f64 	%fd237, 0d3FE62E42FEFA39EF;
	fma.rn.f64 	%fd238, %fd236, %fd237, %fd210;
	neg.f64 	%fd239, %fd236;
	fma.rn.f64 	%fd240, %fd239, %fd237, %fd238;
	sub.f64 	%fd241, %fd240, %fd210;
	sub.f64 	%fd242, %fd233, %fd241;
	mov.f64 	%fd243, 0d3C7ABC9E3B39803F;
	fma.rn.f64 	%fd244, %fd236, %fd243, %fd242;
	add.f64 	%fd258, %fd238, %fd244;
	bra.uni 	BB2_42;

BB2_33:
	abs.f64 	%fd198, %fd41;
	setp.gtu.f64	%p30, %fd198, 0d7FF0000000000000;
	@%p30 bra 	BB2_36;
	bra.uni 	BB2_34;

BB2_36:
	add.f64 	%fd258, %fd41, %fd41;
	bra.uni 	BB2_42;

BB2_34:
	setp.eq.f64	%p31, %fd41, 0d0000000000000000;
	mov.f64 	%fd258, 0dFFF0000000000000;
	@%p31 bra 	BB2_42;

	setp.eq.f64	%p32, %fd41, 0d7FF0000000000000;
	selp.f64	%fd258, %fd41, 0dFFF8000000000000, %p32;

BB2_42:
	cvta.to.global.u64 	%rd13, %rd2;
	add.s64 	%rd15, %rd13, %rd9;
	st.global.f64 	[%rd15], %fd258;

BB2_43:
	ret;
}


