	.data
	.align	4096
	.section ".tdata", #alloc, #write, #tls
	.align	4
	.globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
	.globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
	.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
sg1:	.word 17
sg2:	.word 18
sg3:	.word 19
sg4:	.word 20
sg5:	.word 21
sg6:	.word 22
sg7:	.word 23
sg8:	.word 24
sl1:	.word 65
sl2:	.word 66
sl3:	.word 67
sl4:	.word 68
sl5:	.word 69
sl6:	.word 70
sl7:	.word 71
sl8:	.word 72
sh1:	.word 257
sh2:	.word 258
sh3:	.word 259
sh4:	.word 260
sh5:	.word 261
sh6:	.word 262
sh7:	.word 263
sh8:	.word 264
	.text
	.align	4096
.LLGETPC0:
        retl
        add     %o7, %l7, %l7

	.globl	fn2
	.type	fn2,#function
	.proc	04
fn2:
	save	%sp, -160, %sp
	sethi	%hi(_GLOBAL_OFFSET_TABLE_-4), %l7
	call	.LLGETPC0
	add	%l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
	nop;nop;nop;nop

	/* GD -> IE because variable is not defined in executable */
	sethi	%tgd_hi22(sG1), %l1
	nop
	add	%l1, %tgd_lo10(sG1), %l2
	nop
	add	%l7, %l2, %o0, %tgd_add(sG1)
	nop
	call	__tls_get_addr, %tgd_call(sG1)
	nop
	nop;nop;nop;nop

	/* GD -> IE because variable is not defined in executable where
	   the variable is referenced through IE too */
	sethi	%tgd_hi22(sG2), %o0
	add	%o0, %tgd_lo10(sG2), %o1
	add	%l7, %o1, %o0, %tgd_add(sG2)
	call	__tls_get_addr, %tgd_call(sG2)
	nop
	nop;nop;nop;nop

	/* GD -> LE with global variable defined in executable */
	sethi	%tgd_hi22(sg1), %l0
	add	%l0, %tgd_lo10(sg1), %l5
	add	%l7, %l5, %o0, %tgd_add(sg1)
	call	__tls_get_addr, %tgd_call(sg1)
	nop
	nop;nop;nop;nop

	/* GD -> LE with local variable defined in executable */
	sethi	%tgd_hi22(sl1), %o0
	add	%o0, %tgd_lo10(sl1), %o1
	add	%l7, %o1, %o0, %tgd_add(sl1)
	call	__tls_get_addr, %tgd_call(sl1)
	nop
	nop;nop;nop;nop

	/* GD -> LE with hidden variable defined in executable */
	sethi	%tgd_hi22(sh1), %o0
	add	%o0, %tgd_lo10(sh1), %o1
	add	%l7, %o1, %o0, %tgd_add(sh1)
	call	__tls_get_addr, %tgd_call(sh1)
	nop
	nop;nop;nop;nop

	/* LD -> LE */
	sethi	%tldm_hi22(sl1), %l1
	nop
	add	%l1, %tldm_lo10(sl1), %l2
	nop
	add	%l7, %l2, %o0, %tldm_add(sl1)
	nop
	call	__tls_get_addr, %tldm_call(sl1)
	nop
	sethi	%tldo_hix22(sl1), %l3
	nop
	xor	%l3, %tldo_lox10(sl1), %l4
	nop
	add	%o0, %l4, %l5, %tldo_add(sl1)
	nop
	sethi	%tldo_hix22(sl2 + 2), %l2
	nop
	xor	%l2, %tldo_lox10(sl2 + 2), %l3
	nop
	lduh	[%o0 + %l3], %l6, %tldo_add(sl2 + 2)
	nop;nop;nop;nop

	/* LD -> LE against hidden variables */
	sethi	%tldm_hi22(sh1), %o1
	sethi	%tldo_hix22(sh1), %l3
	add	%o1, %tldm_lo10(sh1), %o2
	sethi	%tldo_hix22(sh2 + 1), %l2
	add	%l7, %o2, %o0, %tldm_add(sh1)
	xor	%l3, %tldo_lox10(sh1), %l4
	call	__tls_get_addr, %tldm_call(sh1)
	xor	%l2, %tldo_lox10(sh2 + 1), %l3
	add	%o0, %l4, %l5, %tldo_add(sh1)
	ldub	[%o0 + %l3], %l6, %tldo_add(sh2 + 1)
	nop;nop;nop;nop

	/* IE against global var  */
	sethi	%tie_hi22(sG2), %l1
	nop
	add	%l1, %tie_lo10(sG2), %l2
	nop
	ldx	[%l7 + %l2], %l2, %tie_ldx(sG2)
	nop
	add	%g7, %l2, %l2, %tie_add(sG2)
	nop;nop;nop;nop

	/* IE -> LE against global var defined in exec */
	sethi	%tie_hi22(sg1), %o3
	add	%o3, %tie_lo10(sg1), %o3
	ldx	[%l7 + %o3], %o2, %tie_ldx(sg1)
	add	%g7, %o2, %o4, %tie_add(sg1)
	nop;nop;nop;nop

	/* IE -> LE against local var */
	sethi	%tie_hi22(sl1), %l4
	add	%l4, %tie_lo10(sl1), %l1
	ldx	[%l7 + %l1], %l3, %tie_ldx(sl1)
	add	%g7, %l3, %l3, %tie_add(sl1)
	nop;nop;nop;nop

	/* IE -> LE against hidden var */
	sethi	%tie_hi22(sh1), %o1
	add	%o1, %tie_lo10(sh1), %o3
	ldx	[%l7 + %o3], %o0, %tie_ldx(sh1)
	add	%g7, %o0, %o3, %tie_add(sh1)
	nop;nop;nop;nop

	/* Direct access through %g7  */

	/* IE against global var  */
	sethi	%tie_hi22(sG5), %o3
	add	%o3, %tie_lo10(sG5), %o3
	ldx	[%l7 + %o3], %o2, %tie_ldx(sG5)
	ldx	[%g7 + %o2], %o4, %tie_add(sG5)
	nop;nop;nop;nop

	/* IE->LE against local var  */
	sethi	%tie_hi22(sl5), %o3
	add	%o3, %tie_lo10(sl5), %o3
	ldx	[%l7 + %o3], %o2, %tie_ldx(sl5)
	stb	%o4, [%g7 + %o2], %tie_add(sl5)
	nop;nop;nop;nop

	/* IE->LE against hidden var  */
	sethi	%tie_hi22(sh5), %o5
	add	%o5, %tie_lo10(sh5), %o3
	ldx	[%l7 + %o3], %o2, %tie_ldx(sh5)
	ldsb	[%g7 + %o2], %o4, %tie_add(sh5)
	nop;nop;nop;nop

	return	%i7 + 8
	nop
