{
  "asm": [
    {
      "source": null,
      "text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26729.0 "
    },
    {
      "source": null,
      "text": ""
    },
    {
      "source": null,
      "text": "include listing.inc"
    },
    {
      "source": null,
      "text": ""
    },
    {
      "source": null,
      "text": "INCLUDELIB LIBCMT"
    },
    {
      "source": null,
      "text": "INCLUDELIB OLDNAMES"
    },
    {
      "source": null,
      "text": ""
    },
    {
      "source": null,
      "text": "PUBLIC\t?g@@3Usafetls@@A\t\t\t\t; g"
    },
    {
      "source": null,
      "text": "PUBLIC\t?h@@3HA\t\t\t\t\t\t; h"
    },
    {
      "source": null,
      "text": "_TLS\tSEGMENT"
    },
    {
      "source": null,
      "text": "?h@@3HA\tDD\t012345H\t\t\t\t\t; h"
    },
    {
      "source": null,
      "text": "\tORG $+4"
    },
    {
      "source": null,
      "text": "?g@@3Usafetls@@A DD 098765H\t\t\t\t; g"
    },
    {
      "source": null,
      "text": "\tORG $+8"
    },
    {
      "source": null,
      "text": "_TLS\tENDS"
    },
    {
      "source": null,
      "text": "PUBLIC\t?value@safetls@@QEAAHXZ\t\t\t\t; safetls::value"
    },
    {
      "source": null,
      "text": "PUBLIC\t?func@@YAHXZ\t\t\t\t\t; func"
    },
    {
      "source": null,
      "text": "PUBLIC\t?func2@@YAHXZ\t\t\t\t\t; func2"
    },
    {
      "source": null,
      "text": "PUBLIC\tmain"
    },
    {
      "source": null,
      "text": "EXTRN\t_tls_index:DWORD"
    },
    {
      "source": null,
      "text": ";\tCOMDAT pdata"
    },
    {
      "source": null,
      "text": "pdata\tSEGMENT"
    },
    {
      "source": null,
      "text": "$pdata$?func@@YAHXZ DD imagerel $LN3"
    },
    {
      "source": null,
      "text": "\tDD\timagerel $LN3+43"
    },
    {
      "source": null,
      "text": "\tDD\timagerel $unwind$?func@@YAHXZ"
    },
    {
      "source": null,
      "text": "pdata\tENDS"
    },
    {
      "source": null,
      "text": "pdata\tSEGMENT"
    },
    {
      "source": null,
      "text": "$pdata$main DD\timagerel $LN3"
    },
    {
      "source": null,
      "text": "\tDD\timagerel $LN3+31"
    },
    {
      "source": null,
      "text": "\tDD\timagerel $unwind$main"
    },
    {
      "source": null,
      "text": "pdata\tENDS"
    },
    {
      "source": null,
      "text": "xdata\tSEGMENT"
    },
    {
      "source": null,
      "text": "$unwind$main DD\t010401H"
    },
    {
      "source": null,
      "text": "\tDD\t06204H"
    },
    {
      "source": null,
      "text": "xdata\tENDS"
    },
    {
      "source": null,
      "text": ";\tCOMDAT xdata"
    },
    {
      "source": null,
      "text": "xdata\tSEGMENT"
    },
    {
      "source": null,
      "text": "$unwind$?func@@YAHXZ DD 010401H"
    },
    {
      "source": null,
      "text": "\tDD\t04204H"
    },
    {
      "source": null,
      "text": "xdata\tENDS"
    },
    {
      "source": null,
      "text": "; Function compile flags: /Odtp"
    },
    {
      "source": null,
      "text": "_TEXT\tSEGMENT"
    },
    {
      "source": null,
      "text": "tv64 = 32"
    },
    {
      "source": null,
      "text": "main\tPROC"
    },
    {
      "source": null,
      "text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
    },
    {
      "source": null,
      "text": "; Line 26"
    },
    {
      "source": null,
      "text": "$LN3:"
    },
    {
      "source": null,
      "text": "\tsub\trsp, 56\t\t\t\t\t; 00000038H"
    },
    {
      "source": null,
      "text": "; Line 27"
    },
    {
      "source": null,
      "text": "\tcall\t?func@@YAHXZ\t\t\t\t; func"
    },
    {
      "source": null,
      "text": "\tmov\tDWORD PTR tv64[rsp], eax"
    },
    {
      "source": null,
      "text": "\tcall\t?func2@@YAHXZ\t\t\t\t; func2"
    },
    {
      "source": null,
      "text": "\tmov\tecx, DWORD PTR tv64[rsp]"
    },
    {
      "source": null,
      "text": "\tadd\tecx, eax"
    },
    {
      "source": null,
      "text": "\tmov\teax, ecx"
    },
    {
      "source": null,
      "text": "; Line 28"
    },
    {
      "source": null,
      "text": "\tadd\trsp, 56\t\t\t\t\t; 00000038H"
    },
    {
      "source": null,
      "text": "\tret\t0"
    },
    {
      "source": null,
      "text": "main\tENDP"
    },
    {
      "source": null,
      "text": "_TEXT\tENDS"
    },
    {
      "source": null,
      "text": "; Function compile flags: /Odtp"
    },
    {
      "source": null,
      "text": ";\tCOMDAT ?func2@@YAHXZ"
    },
    {
      "source": null,
      "text": "_TEXT\tSEGMENT"
    },
    {
      "source": null,
      "text": "?func2@@YAHXZ PROC\t\t\t\t\t; func2, COMDAT"
    },
    {
      "source": null,
      "text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
    },
    {
      "source": null,
      "text": "; Line 22"
    },
    {
      "source": null,
      "text": "\tmov\teax, OFFSET FLAT:?h@@3HA\t\t; h"
    },
    {
      "source": null,
      "text": "\tmov\teax, eax"
    },
    {
      "source": null,
      "text": "\tmov\tecx, DWORD PTR _tls_index"
    },
    {
      "source": null,
      "text": "\tmov\trdx, QWORD PTR gs:88"
    },
    {
      "source": null,
      "text": "\tmov\trcx, QWORD PTR [rdx+rcx*8]"
    },
    {
      "source": null,
      "text": "\tmov\teax, DWORD PTR [rax+rcx]"
    },
    {
      "source": null,
      "text": "; Line 23"
    },
    {
      "source": null,
      "text": "\tret\t0"
    },
    {
      "source": null,
      "text": "?func2@@YAHXZ ENDP\t\t\t\t\t; func2"
    },
    {
      "source": null,
      "text": "_TEXT\tENDS"
    },
    {
      "source": null,
      "text": "; Function compile flags: /Odtp"
    },
    {
      "source": null,
      "text": ";\tCOMDAT ?func@@YAHXZ"
    },
    {
      "source": null,
      "text": "_TEXT\tSEGMENT"
    },
    {
      "source": null,
      "text": "?func@@YAHXZ PROC\t\t\t\t\t; func, COMDAT"
    },
    {
      "source": null,
      "text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
    },
    {
      "source": null,
      "text": "; Line 16"
    },
    {
      "source": null,
      "text": "$LN3:"
    },
    {
      "source": null,
      "text": "\tsub\trsp, 40\t\t\t\t\t; 00000028H"
    },
    {
      "source": null,
      "text": "; Line 17"
    },
    {
      "source": null,
      "text": "\tmov\teax, OFFSET FLAT:?g@@3Usafetls@@A\t; g"
    },
    {
      "source": null,
      "text": "\tmov\teax, eax"
    },
    {
      "source": null,
      "text": "\tmov\tecx, DWORD PTR _tls_index"
    },
    {
      "source": null,
      "text": "\tmov\trdx, QWORD PTR gs:88"
    },
    {
      "source": null,
      "text": "\tadd\trax, QWORD PTR [rdx+rcx*8]"
    },
    {
      "source": null,
      "text": "\tmov\trcx, rax"
    },
    {
      "source": null,
      "text": "\tcall\t?value@safetls@@QEAAHXZ\t\t\t; safetls::value"
    },
    {
      "source": null,
      "text": "; Line 18"
    },
    {
      "source": null,
      "text": "\tadd\trsp, 40\t\t\t\t\t; 00000028H"
    },
    {
      "source": null,
      "text": "\tret\t0"
    },
    {
      "source": null,
      "text": "?func@@YAHXZ ENDP\t\t\t\t\t; func"
    },
    {
      "source": null,
      "text": "_TEXT\tENDS"
    },
    {
      "source": null,
      "text": "; Function compile flags: /Odtp"
    },
    {
      "source": null,
      "text": ";\tCOMDAT ?value@safetls@@QEAAHXZ"
    },
    {
      "source": null,
      "text": "_TEXT\tSEGMENT"
    },
    {
      "source": null,
      "text": "this$ = 8"
    },
    {
      "source": null,
      "text": "?value@safetls@@QEAAHXZ PROC\t\t\t\t; safetls::value, COMDAT"
    },
    {
      "source": null,
      "text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
    },
    {
      "source": null,
      "text": "; Line 9"
    },
    {
      "source": null,
      "text": "\tmov\tQWORD PTR [rsp+8], rcx"
    },
    {
      "source": null,
      "text": "\tmov\trax, QWORD PTR this$[rsp]"
    },
    {
      "source": null,
      "text": "\tmov\trcx, QWORD PTR this$[rsp]"
    },
    {
      "source": null,
      "text": "\tmov\tecx, DWORD PTR [rcx+4]"
    },
    {
      "source": null,
      "text": "\tmov\teax, DWORD PTR [rax]"
    },
    {
      "source": null,
      "text": "\tsub\teax, ecx"
    },
    {
      "source": null,
      "text": "\tmov\trcx, QWORD PTR this$[rsp]"
    },
    {
      "source": null,
      "text": "\tadd\teax, DWORD PTR [rcx+8]"
    },
    {
      "source": null,
      "text": "\tret\t0"
    },
    {
      "source": null,
      "text": "?value@safetls@@QEAAHXZ ENDP\t\t\t\t; safetls::value"
    },
    {
      "source": null,
      "text": "_TEXT\tENDS"
    },
    {
      "source": null,
      "text": "END"
    },
    {
      "source": null,
      "text": ""
    }
  ]
}
