|  | ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26729.0 | 
|  |  | 
|  | include listing.inc | 
|  |  | 
|  | INCLUDELIB LIBCMT | 
|  | INCLUDELIB OLDNAMES | 
|  |  | 
|  | PUBLIC	?g@@3Usafetls@@A				; g | 
|  | PUBLIC	?h@@3HA						; h | 
|  | _TLS	SEGMENT | 
|  | ?h@@3HA	DD	012345H					; h | 
|  | ORG $+4 | 
|  | ?g@@3Usafetls@@A DD 098765H				; g | 
|  | ORG $+8 | 
|  | _TLS	ENDS | 
|  | PUBLIC	?value@safetls@@QEAAHXZ				; safetls::value | 
|  | PUBLIC	?func@@YAHXZ					; func | 
|  | PUBLIC	?func2@@YAHXZ					; func2 | 
|  | PUBLIC	main | 
|  | EXTRN	_tls_index:DWORD | 
|  | ;	COMDAT pdata | 
|  | pdata	SEGMENT | 
|  | $pdata$?func@@YAHXZ DD imagerel $LN3 | 
|  | DD	imagerel $LN3+43 | 
|  | DD	imagerel $unwind$?func@@YAHXZ | 
|  | pdata	ENDS | 
|  | pdata	SEGMENT | 
|  | $pdata$main DD	imagerel $LN3 | 
|  | DD	imagerel $LN3+31 | 
|  | DD	imagerel $unwind$main | 
|  | pdata	ENDS | 
|  | xdata	SEGMENT | 
|  | $unwind$main DD	010401H | 
|  | DD	06204H | 
|  | xdata	ENDS | 
|  | ;	COMDAT xdata | 
|  | xdata	SEGMENT | 
|  | $unwind$?func@@YAHXZ DD 010401H | 
|  | DD	04204H | 
|  | xdata	ENDS | 
|  | ; Function compile flags: /Odtp | 
|  | _TEXT	SEGMENT | 
|  | tv64 = 32 | 
|  | main	PROC | 
|  | ; File c:\users\quist\appdata\local\temp\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\example.cpp | 
|  | ; Line 26 | 
|  | $LN3: | 
|  | sub	rsp, 56					; 00000038H | 
|  | ; Line 27 | 
|  | call	?func@@YAHXZ				; func | 
|  | mov	DWORD PTR tv64[rsp], eax | 
|  | call	?func2@@YAHXZ				; func2 | 
|  | mov	ecx, DWORD PTR tv64[rsp] | 
|  | add	ecx, eax | 
|  | mov	eax, ecx | 
|  | ; Line 28 | 
|  | add	rsp, 56					; 00000038H | 
|  | ret	0 | 
|  | main	ENDP | 
|  | _TEXT	ENDS | 
|  | ; Function compile flags: /Odtp | 
|  | ;	COMDAT ?func2@@YAHXZ | 
|  | _TEXT	SEGMENT | 
|  | ?func2@@YAHXZ PROC					; func2, COMDAT | 
|  | ; File c:\users\quist\appdata\local\temp\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\example.cpp | 
|  | ; Line 22 | 
|  | mov	eax, OFFSET FLAT:?h@@3HA		; h | 
|  | mov	eax, eax | 
|  | mov	ecx, DWORD PTR _tls_index | 
|  | mov	rdx, QWORD PTR gs:88 | 
|  | mov	rcx, QWORD PTR [rdx+rcx*8] | 
|  | mov	eax, DWORD PTR [rax+rcx] | 
|  | ; Line 23 | 
|  | ret	0 | 
|  | ?func2@@YAHXZ ENDP					; func2 | 
|  | _TEXT	ENDS | 
|  | ; Function compile flags: /Odtp | 
|  | ;	COMDAT ?func@@YAHXZ | 
|  | _TEXT	SEGMENT | 
|  | ?func@@YAHXZ PROC					; func, COMDAT | 
|  | ; File c:\users\quist\appdata\local\temp\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\example.cpp | 
|  | ; Line 16 | 
|  | $LN3: | 
|  | sub	rsp, 40					; 00000028H | 
|  | ; Line 17 | 
|  | mov	eax, OFFSET FLAT:?g@@3Usafetls@@A	; g | 
|  | mov	eax, eax | 
|  | mov	ecx, DWORD PTR _tls_index | 
|  | mov	rdx, QWORD PTR gs:88 | 
|  | add	rax, QWORD PTR [rdx+rcx*8] | 
|  | mov	rcx, rax | 
|  | call	?value@safetls@@QEAAHXZ			; safetls::value | 
|  | ; Line 18 | 
|  | add	rsp, 40					; 00000028H | 
|  | ret	0 | 
|  | ?func@@YAHXZ ENDP					; func | 
|  | _TEXT	ENDS | 
|  | ; Function compile flags: /Odtp | 
|  | ;	COMDAT ?value@safetls@@QEAAHXZ | 
|  | _TEXT	SEGMENT | 
|  | this$ = 8 | 
|  | ?value@safetls@@QEAAHXZ PROC				; safetls::value, COMDAT | 
|  | ; File c:\users\quist\appdata\local\temp\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\example.cpp | 
|  | ; Line 9 | 
|  | mov	QWORD PTR [rsp+8], rcx | 
|  | mov	rax, QWORD PTR this$[rsp] | 
|  | mov	rcx, QWORD PTR this$[rsp] | 
|  | mov	ecx, DWORD PTR [rcx+4] | 
|  | mov	eax, DWORD PTR [rax] | 
|  | sub	eax, ecx | 
|  | mov	rcx, QWORD PTR this$[rsp] | 
|  | add	eax, DWORD PTR [rcx+8] | 
|  | ret	0 | 
|  | ?value@safetls@@QEAAHXZ ENDP				; safetls::value | 
|  | _TEXT	ENDS | 
|  | END |