; Assembly listing for method ClassicLibrary.Workloads:TaskChain(int):System.Threading.Tasks.Task`1[int] (FullOpts)
; Emitting BLENDED_CODE for x64 + VEX on Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       sub      rsp, 56
       vxorps   xmm4, xmm4, xmm4
       vmovdqa  xmmword ptr [rsp+0x20], xmm4
       xor      eax, eax
       mov      qword ptr [rsp+0x30], rax
 
G_M000_IG02:                ;; offset=0x0015
       mov      dword ptr [rsp+0x24], ecx
       mov      dword ptr [rsp+0x20], -1
       lea      rcx, [rsp+0x20]
       call     [System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[ClassicLibrary.Workloads+<TaskChain>d__0](byref)]
       mov      rax, gword ptr [rsp+0x28]
       test     rax, rax
       je       SHORT G_M000_IG04
 
G_M000_IG03:                ;; offset=0x0036
       add      rsp, 56
       ret      
 
G_M000_IG04:                ;; offset=0x003B
       lea      rcx, [rsp+0x28]
       call     [System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:InitializeTaskAsPromise():System.Threading.Tasks.Task`1[int]:this]
       jmp      SHORT G_M000_IG03
 
; Total bytes of code 72

; Assembly listing for method RuntimeLibrary.Workloads:TaskChain(int):System.Threading.Tasks.Task`1[int] (FullOpts)
; Emitting BLENDED_CODE for x64 + VEX on Windows
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 3 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       push     rbp
       push     rsi
       push     rbx
       sub      rsp, 128
       lea      rbp, [rsp+0x90]
       xor      eax, eax
       mov      qword ptr [rbp-0x58], rax
       vxorps   xmm4, xmm4, xmm4
       vmovdqu  ymmword ptr [rbp-0x50], ymm4
       vmovdqu  ymmword ptr [rbp-0x30], ymm4
       mov      ebx, ecx
 
G_M000_IG02:                ;; offset=0x0028
       mov      rcx, qword ptr GS:[0x0058]
       mov      rcx, qword ptr [rcx+0x40]
       cmp      dword ptr [rcx+0x250], 5
       jle      G_M000_IG17
       mov      rcx, gword ptr [rcx+0x258]
       mov      rax, bword ptr [rcx+0x28]
       test     rax, rax
       je       G_M000_IG17
 
G_M000_IG03:                ;; offset=0x0056
       mov      rcx, gword ptr [rax+0x10]
       add      rcx, 8
       mov      bword ptr [rbp-0x68], rcx
       mov      rcx, bword ptr [rbp-0x68]
       mov      rax, qword ptr [rcx+0x20]
       mov      qword ptr [rbp-0x20], rax
       lea      rax, [rbp-0x58]
       mov      qword ptr [rcx+0x20], rax
       cmp      gword ptr [rcx+0x18], 0
       jne      SHORT G_M000_IG07
 
G_M000_IG04:                ;; offset=0x007D
       mov      rax, qword ptr GS:[0x0058]
       mov      rax, qword ptr [rax+0x40]
       cmp      dword ptr [rax+0x250], 2
       jle      G_M000_IG18
       mov      rax, gword ptr [rax+0x258]
       mov      rax, bword ptr [rax+0x10]
       test     rax, rax
       je       G_M000_IG18
 
G_M000_IG05:                ;; offset=0x00AB
       mov      rdx, gword ptr [rax+0x10]
       test     rdx, rdx
       jne      SHORT G_M000_IG06
       call     [System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread]
       mov      rdx, rax
 
G_M000_IG06:                ;; offset=0x00BD
       mov      rcx, bword ptr [rbp-0x68]
       lea      rcx, bword ptr [rcx+0x18]
       call     CORINFO_HELP_ASSIGN_REF
       nop      
 
G_M000_IG07:                ;; offset=0x00CB
       mov      edx, ebx
       xor      rcx, rcx
       call     [RuntimeLibrary.Workloads:TaskChain(int):int]
       mov      ebx, eax
       test     rcx, rcx
       jne      SHORT G_M000_IG13
       lea      esi, [rbx+0x01]
       cmp      esi, 10
       jb       SHORT G_M000_IG08
       mov      rcx, 0x7FFD38130888
       call     CORINFO_HELP_NEWSFAST
       mov      dword ptr [rax+0x34], 0x1000000
       mov      dword ptr [rax+0x38], ebx
       jmp      SHORT G_M000_IG10
 
G_M000_IG08:                ;; offset=0x00FF
       test     byte  ptr [(reloc 0x7ffd38167260)], 1
       je       SHORT G_M000_IG11
 
G_M000_IG09:                ;; offset=0x0108
       mov      ecx, 0x80000368
       mov      rcx, gword ptr [rcx]
       cmp      esi, dword ptr [rcx+0x08]
       jae      SHORT G_M000_IG12
       mov      eax, esi
       mov      rax, gword ptr [rcx+8*rax+0x10]
 
G_M000_IG10:                ;; offset=0x011C
       mov      gword ptr [rbp-0x60], rax
       jmp      G_M000_IG15
 
G_M000_IG11:                ;; offset=0x0125
       mov      rcx, 0x7FFD381671E8
       call     CORINFO_HELP_GET_GCSTATIC_BASE
       jmp      SHORT G_M000_IG09
 
G_M000_IG12:                ;; offset=0x0136
       call     CORINFO_HELP_RNGCHKFAIL
       int3     
 
G_M000_IG13:                ;; offset=0x013C
       mov      rcx, 0x7FFD381D2B80
       call     CORINFO_HELP_NEWSFAST
       mov      rbx, rax
       mov      dword ptr [rbx+0x34], 0x2000400
       mov      rcx, 0x7FFD381D0EB8
       call     CORINFO_HELP_NEWSFAST
       mov      rsi, rax
       lea      rcx, bword ptr [rsi+0x10]
       mov      rdx, rbx
       call     CORINFO_HELP_ASSIGN_REF
       mov      rcx, 0x7FFD381A39C0
       mov      qword ptr [rsi+0x18], rcx
       lea      rcx, bword ptr [rbx+0x08]
       mov      rdx, rsi
       call     CORINFO_HELP_ASSIGN_REF
       or       dword ptr [rbx+0x34], 0x800
       mov      rcx, bword ptr [rbp-0x68]
       mov      rdx, rbx
       call     [System.Runtime.CompilerServices.AsyncHelpers:FinalizeRuntimeAsyncTask[int](byref,System.Runtime.CompilerServices.AsyncHelpers+RuntimeAsyncTask`1[int])]
       mov      gword ptr [rbp-0x60], rbx
       jmp      SHORT G_M000_IG15
 
G_M000_IG14:                ;; offset=0x01A7
       nop      
 
G_M000_IG15:                ;; offset=0x01A8
       mov      rcx, bword ptr [rbp-0x68]
       mov      rax, qword ptr [rcx+0x20]
       mov      rax, qword ptr [rax+0x38]
       mov      qword ptr [rcx+0x20], rax
       mov      rax, gword ptr [rbp-0x60]
 
G_M000_IG16:                ;; offset=0x01BC
       add      rsp, 128
       pop      rbx
       pop      rsi
       pop      rbp
       ret      
 
G_M000_IG17:                ;; offset=0x01C7
       mov      ecx, 5
       call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
       jmp      G_M000_IG03
 
G_M000_IG18:                ;; offset=0x01D6
       mov      ecx, 2
       call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
       jmp      G_M000_IG05
 
G_M000_IG19:                ;; offset=0x01E5
       sub      rsp, 40
 
G_M000_IG20:                ;; offset=0x01E9
       call     [System.Runtime.CompilerServices.AsyncHelpers:TaskFromException[int](System.Exception):System.Threading.Tasks.Task`1[int]]
       mov      gword ptr [rbp-0x60], rax
       lea      rax, G_M000_IG14
 
G_M000_IG21:                ;; offset=0x01FA
       add      rsp, 40
       ret      
 
G_M000_IG22:                ;; offset=0x01FF
       sub      rsp, 40
 
G_M000_IG23:                ;; offset=0x0203
       mov      rcx, bword ptr [rbp-0x68]
       mov      rax, qword ptr [rcx+0x20]
       mov      rax, qword ptr [rax+0x38]
       mov      qword ptr [rcx+0x20], rax
 
G_M000_IG24:                ;; offset=0x0213
       add      rsp, 40
       ret      
 
; Total bytes of code 536

; Assembly listing for method RuntimeLibrary.Workloads:TaskChain(int):int (FullOpts)
; Emitting BLENDED_CODE for x64 + VEX on Windows
; FullOpts code
; async
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       push     rbp
       push     rdi
       push     rsi
       push     rbx
       sub      rsp, 88
       lea      rbp, [rsp+0x70]
       vxorps   xmm4, xmm4, xmm4
       vmovdqu  xmmword ptr [rbp-0x38], xmm4
       xor      eax, eax
       mov      qword ptr [rbp-0x28], rax
       mov      ebx, edx
 
G_M000_IG02:                ;; offset=0x001E
       test     rcx, rcx
       jne      G_M000_IG16
       xor      ecx, ecx
       mov      qword ptr [rbp-0x20], rcx
       mov      rcx, qword ptr GS:[0x0058]
       mov      rcx, qword ptr [rcx+0x40]
       cmp      dword ptr [rcx+0x250], 2
       jle      SHORT G_M000_IG11
       mov      rcx, gword ptr [rcx+0x258]
       mov      rax, bword ptr [rcx+0x10]
       test     rax, rax
       je       SHORT G_M000_IG11
 
G_M000_IG03:                ;; offset=0x0053
       mov      rdx, gword ptr [rax+0x10]
       mov      gword ptr [rbp-0x28], rdx
       mov      r8, gword ptr [rdx+0x08]
       mov      gword ptr [rbp-0x30], r8
       mov      r9, gword ptr [rdx+0x10]
       mov      gword ptr [rbp-0x38], r9
 
G_M000_IG04:                ;; offset=0x006B
       mov      edx, ebx
       xor      rcx, rcx
       call     [RuntimeLibrary.Workloads:TaskMiddle(int):int]
       test     rcx, rcx
       jne      SHORT G_M000_IG14
 
G_M000_IG05:                ;; offset=0x007A
       lea      ebx, [rax+0x01]
 
G_M000_IG06:                ;; offset=0x007D
       movzx    rcx, byte  ptr [rbp-0x20]
       mov      rdi, gword ptr [rbp-0x28]
       mov      rsi, gword ptr [rbp-0x30]
       mov      r9, gword ptr [rbp-0x38]
       test     ecx, ecx
       jne      SHORT G_M000_IG09
 
G_M000_IG07:                ;; offset=0x0091
       cmp      r9, gword ptr [rdi+0x10]
       jne      SHORT G_M000_IG12
 
G_M000_IG08:                ;; offset=0x0097
       mov      r8, gword ptr [rdi+0x08]
       cmp      rsi, r8
       jne      SHORT G_M000_IG13
 
G_M000_IG09:                ;; offset=0x00A0
       mov      eax, ebx
       xor      ecx, ecx
 
G_M000_IG10:                ;; offset=0x00A4
       add      rsp, 88
       pop      rbx
       pop      rsi
       pop      rdi
       pop      rbp
       ret      
 
G_M000_IG11:                ;; offset=0x00AD
       mov      ecx, 2
       call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
       jmp      SHORT G_M000_IG03
 
G_M000_IG12:                ;; offset=0x00B9
       lea      rcx, bword ptr [rdi+0x10]
       mov      rdx, r9
       call     CORINFO_HELP_ASSIGN_REF
       jmp      SHORT G_M000_IG08
 
G_M000_IG13:                ;; offset=0x00C7
       mov      rcx, rdi
       mov      rdx, rsi
       call     [System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext)]
       jmp      SHORT G_M000_IG09
 
G_M000_IG14:                ;; offset=0x00D5
       mov      rdx, 0x7FFD381D4B80
       call     [CORINFO_HELP_ALLOC_CONTINUATION]
       mov      rbx, rax
       lea      rcx, [reloc @RWD00]
       mov      qword ptr [rbx+0x10], rcx
       mov      qword ptr [rbx+0x18], 0x1890
       mov      rsi, gword ptr [rbp-0x30]
       mov      gword ptr [rsp+0x20], rsi
       mov      r9, gword ptr [rbp-0x38]
       mov      gword ptr [rsp+0x28], r9
       lea      rcx, bword ptr [rbx+0x28]
       lea      rdx, bword ptr [rbx+0x18]
       lea      r8, bword ptr [rbx+0x20]
       xor      r9d, r9d
       call     [System.Runtime.CompilerServices.AsyncHelpers:FinishSuspensionWithContinuationContext(byref,byref,byref,bool,System.Threading.ExecutionContext,System.Threading.SynchronizationContext)]
       mov      rcx, rbx
 
G_M000_IG15:                ;; offset=0x0125
       add      rsp, 88
       pop      rbx
       pop      rsi
       pop      rdi
       pop      rbp
       ret      
 
G_M000_IG16:                ;; offset=0x012E
       mov      qword ptr [rbp-0x20], 1
       mov      eax, dword ptr [rcx+0x30]
       jmp      G_M000_IG05
 
G_M000_IG17:                ;; offset=0x013E
       sub      rsp, 56
 
G_M000_IG18:                ;; offset=0x0142
       mov      ecx, dword ptr [rbp-0x20]
       mov      rdx, gword ptr [rbp-0x28]
       mov      r8, gword ptr [rbp-0x30]
       mov      r9, gword ptr [rbp-0x38]
       call     [System.Runtime.CompilerServices.AsyncHelpers:RestoreContexts(bool,System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.SynchronizationContext)]
       nop      
 
G_M000_IG19:                ;; offset=0x0158
       add      rsp, 56
       ret      
 
RWD00  	dq	(dynamicClass):IL_STUB_AsyncResume(System.Object,byref):System.Object
	dq	G_M000_IG14

; Total bytes of code 349

